2012-04-27 179 views
0

我收到错误“缺少参数值”。我浏览了很多帖子,并尝试了所有。缺少参数值

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; 

    } 

回答

0

确保所有参数都在Crystal预期的类型中。

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

+0

是的,我在日期参数中犯了一个错误。我从那以后把它卡到pparms.periodstart = DateTime.ParseExact(“20120316”,“yyyymmdd”,System.Globalization.CultureInfo.CurrentCulture); pparms.periodend = DateTime.ParseExact(“20120331”,“yyyymmdd”,System.Globalization.CultureInfo.CurrentCulture); – stackuser 2012-04-30 01:46:58

+0

但它没有解决问题。仍然得到相同的错误。 – stackuser 2012-04-30 01:55:15

+0

我的意思是在你的水晶报告中,确保报告期望的参数类型与你在代码中传递给它的类型相同。 – sinelaw 2012-04-30 13:05:00