Asp.net 缺少参数值

Asp.net 缺少参数值,asp.net,crystal-reports,Asp.net,Crystal Reports,我收到错误“缺少参数值”。我看过很多帖子,都试过了 protected void Page_Load(object sender, EventArgs e) { PaystubParms pparms = new PaystubParms(); pparms.periodstart = 20120316; pparms.periodend = 20120331; pparms.empno = "91065";

我收到错误“缺少参数值”。我看过很多帖子,都试过了

protected void Page_Load(object sender, EventArgs e)
    {
        PaystubParms pparms = new PaystubParms();

        pparms.periodstart = 20120316;
        pparms.periodend = 20120331;
        pparms.empno = "91065";
        pparms.checknbr = 2306;

        PaystubCrystalReportSource.ReportDocument.SetDatabaseLogon("Abra_Reports","123456","Tsysmas","AbraHrms_Live");


        ParameterField pfield0 = PaystubCrystalReportViewer.ParameterFieldInfo[0];
        ParameterDiscreteValue pfield0val = new ParameterDiscreteValue();

        pfield0val.Value = pparms.periodstart;
        pfield0.CurrentValues.Add(pfield0val);
        //-------------------------------------------------------------------------
        ParameterField pfield1 = PaystubCrystalReportViewer.ParameterFieldInfo[1];
        ParameterDiscreteValue pfield1val = new ParameterDiscreteValue();

        pfield1val.Value = pparms.periodend;
        pfield1.CurrentValues.Add(pfield1val);

        //-------------------------------------------------------------------------
        ParameterField pfield2 = PaystubCrystalReportViewer.ParameterFieldInfo[2];
        ParameterDiscreteValue pfield2val = new ParameterDiscreteValue();

        pfield2val.Value = pparms.empno;
        pfield2.CurrentValues.Add(pfield1val);
        //-------------------------------------------------------------------------
        ParameterField pfield3 = PaystubCrystalReportViewer.ParameterFieldInfo[3];
        ParameterDiscreteValue pfield3val = new ParameterDiscreteValue();

        pfield3val.Value = pparms.periodstart;
        pfield3.CurrentValues.Add(pfield1val);



        PaystubCrystalReportSource.ReportDocument.SetParameterValue(0, pfield0.CurrentValues.Add(pfield0val));

        *******************************************************************
        I have also tried
        PaystubCrystalReportSource.ReportDocument.SetParameterValue(0, pparms.periodstart);
        *******************************************************************************

        PaystubCrystalReportSource.ReportDocument.SetParameterValue(1, pfield1.CurrentValues.Add(pfield1val));
        PaystubCrystalReportSource.ReportDocument.SetParameterValue(2, pfield2.CurrentValues.Add(pfield2val));
        PaystubCrystalReportSource.ReportDocument.SetParameterValue(3, pfield3.CurrentValues.Add(pfield3val));

        PaystubCrystalReportViewer.ReportSource = PaystubCrystalReportSource;

    }

确保所有参数都是Crystal期望的类型


有时,传递错误类型的参数可能会导致缺少参数错误。例如,为整数参数传递十进制值。

是的,我确实在日期参数中犯了错误。从那以后,我将其添加到pparms.periodstart=DateTime.ParseExact20120316,yyyymmdd,System.Globalization.CultureInfo.CurrentCulture;pparms.periodend=DateTime.ParseExact20120331,yyyymmdd,System.Globalization.CultureInfo.CurrentCulture;但这并没有解决问题。仍然收到相同的错误。我的意思是,在crystal报表中,确保报表所需的参数类型与您在代码中传递给它的参数类型相同。crystal报表使用T-SQL存储过程,该存储过程接受3个输入参数@startdate date、@enddate date、@empno varchar7。第四个参数来自crystal本身-检查nbr,类型编号为。从asp.net中,我只能传递日期时间,不能传递日期。不确定这是否是问题所在。我不知道如何从asp.net传递日期。另外,asp.net中的参数名称是否必须与存储过程和Crystal中的参数名称匹配?谢谢你的帮助。