2011-01-11 44 views
0

下面的代码可以显示正确的报道, 反而会产生错误信息无效指数参数传递给水晶报表具有无效指数

如果我评论RD.SetParameterValue(“@ Transaction_date_field”,Calendar1.SelectedDate.ToShortDateString() ); ,它不会有错误,但不能显示报告。

如何解决?

try 
     { 
      RD = new ReportDocument(); 
      RD.Load(@"D:\Data\My Documents\Visual Studio 2008\WebSites\Carpark\Daily_CrystalReport.rpt"); 
      //RD.Load(@".\Daily_CrystalReport.rpt"); 


      ParameterFieldDefinitions crParameterFieldDefinitions; 
      ParameterFieldDefinition crParameterFieldDefinition; 
      ParameterValues crParameterValues = new ParameterValues(); 
      ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue(); 

      crParameterDiscreteValue.Value = Calendar1.SelectedDate.ToShortDateString(); 
      crParameterFieldDefinitions = RD.DataDefinition.ParameterFields; 
      crParameterFieldDefinition = crParameterFieldDefinitions["Transaction_date_field"]; 
      crParameterValues = crParameterFieldDefinition.CurrentValues; 

      crParameterValues.Clear(); 
      crParameterValues.Add(crParameterDiscreteValue); 
      crParameterFieldDefinition.ApplyCurrentValues(crParameterValues); 

      DailyReport_CrystalReportViewer.ReportSource = RD; 

      RD.SetParameterValue("@Transaction_date_field", Calendar1.SelectedDate.ToShortDateString()); 
      DailyReport_CrystalReportViewer.EnableParameterPrompt = false; 

      DailyReport_CrystalReportViewer.RefreshReport(); 
      //RD.Dispose(); 
     } 
     catch (Exception ex) 
     { 
      Error_Label.Text = Error_Label.Text + " " + ex.Message; 
      //Error_Label.Text = ""; 
     } 

回答

0

CrystalReport002,

我想你可以传递参数使用类似的报告:

var value = new ParameterDiscreteValue(); 
value.Value = Calendar1.SelectedDate.ToShortDateString(); 
RD.ParameterFields["Transaction_date_field"].CurrentValues.Add(value); 
+0

我有这么多的问题与水晶的工作,我定义了默认的方式来处理用它。如果你感兴趣,你可以在这里查看:http://tiagoontech.wordpress.com/2011/01/12/working-with-crystal-reports-and-c/ – 2011-01-12 19:33:34