【问题标题】:Missing parameter values in Crystal Report in C#C# 水晶报表中缺少参数值
【发布时间】:2017-03-27 09:25:56
【问题描述】:

我正在尝试将参数从 Winform 传递到 Crystal Report,但出现此错误

缺少参数值

我的代码:

PrintCashReport cashreport = new PrintCashReport();
rptvwrcash.ReportSource = cashreport;

ParameterFields paramfields = new ParameterFields();
ParameterField type = new ParameterField();
type.Name = "type";

ParameterDiscreteValue dvtype = new ParameterDiscreteValue();
dvtype.Value = DailySalesReportBL.typeofrpt;
type.CurrentValues.Add(dvtype);
paramfields.Add(type);

rptvwrcash.ParameterFieldInfo = paramfields;

//PrintCashReport cashreport = new PrintCashReport();
cashreport.SetDataSource(ds);
cashreport.SetParameterValue("type", DailySalesReportBL.typeofrpt);

//rptvwrcash.ReportSource = cashreport;
System.Drawing.Printing.PrintDocument printDocument = new System.Drawing.Printing.PrintDocument();
cashreport.PrintOptions.PrinterName = printDocument.PrinterSettings.PrinterName;
cashreport.PrintOptions.PrinterName = "EPSON TM-T88V Receipt";
cashreport.PrintToPrinter(1, false, 0, 0);

我在 Crystal Report 中检查了参数的名称,这也很好。我检查了值,它也得到了正确的值。

所以请帮我找出我哪里弄错了。

谢谢

【问题讨论】:

    标签: c# parameters crystal-reports


    【解决方案1】:

    你应该在“cashreport.SetDataSource(ds)”之后设置“paramfields.Add(....”!!

    否则,参数被“SetDataSource....”覆盖

    【讨论】:

      【解决方案2】:

      报告参数如下所示:

      CRPT.SetParameterValue("smonth", Servercls.month);
      CRPT.SetParameterValue("sday", Servercls.day);
      CRPT.SetParameterValue("datevalue", Servercls.Datevalue);
      Report_Viewer.ReportSource = CRPT;
      

      请参阅此Report Parameter 了解更多信息。

      试试这个方法:

      ReportDocument  CRPT = new ReportDocument();
      ParameterFields param = new ParameterFields();
      ParameterDiscreteValue paramdesc = new ParameterDiscreteValue();
      ParameterField paramfield = new ParameterField();
      paramfield.Name = "type";
      
      String APPPATH = Environment.CurrentDirectory + "\\CrystalReport1.rpt";
      CRPT.Load(APPPATH);
      param = CRPT.ParameterFields;
      CRPT.ParameterFields.Add(paramfield);
      param["type"].CurrentValues.Clear();
      paramdecs.Value = "this is you crystal report parameter value value";
      param["type"].CurrentValues.Add(paramdecs);
      
      rv.ReportSource = CRPT;
      

      【讨论】:

      • 所以我应该删除ParameterFields paramfields = new ParameterFields(); 直到rptvwrcash.ParameterFieldInfo = paramfields; 吗?
      • 先评论你的旧代码,然后尝试关注新代码
      • 水晶报表中有参数名称“type”吗?或者它只是一个 type.name = "type"
      • 是的,Crystal Report 有一个名为 type 的参数作为字符串
      • 我只是注意到这是一个愚蠢的错误,我在 Crystal Report 上有 2 个参数我没有传递哪些值,所以从 Crsytal 报告中删除它并且它有效,很抱歉沟通不畅
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多