嗨!我在 visual studio 2010 中有一个表单应用程序,我想使用报表查看器创建一个报表并添加一些参数。我试图从代码中添加参数,但没有成功。我有这个错误:
Tablix“Tablix1”的 FilterExpression 表达式引用字段“datastart”。报表项表达式只能引用当前数据集范围内的字段,或者如果在聚合内,则引用指定的数据集范围内的字段。 Report2.rdlc:错误 rsParameterReference:tablix“Tablix1”的 FilterValue 表达式引用了一个不存在的报告参数“datastart”。
在我的代码中这样做:
private void SetReportParameters()
{
ReportParameter[] parameters = new ReportParameter[2];
parameters[0] = new ReportParameter("datastart", dateTimePickerStartRaport.Text);
parameters[1] = new ReportParameter("dataStop", dateTimePickerStopRaport.Text);
this.reportViewer1.LocalReport.SetParameters(parameters);
}
在调用此方法后刷新报告查看器
reportViewer1.RefreshReport();
我也看了其他论坛,我看到我必须将参数添加到报告中,但我没有弄清楚我必须怎么做。我还尝试在报告的属性窗口中添加一些具有值
的过滤器 =Parameters!datastart.Value
但这也没有用。
你得到的错误是因为你试图像字段一样指定你的参数。在表达式设计器中,您有一个名为“参数”的特殊类别。从那里您可以访问您的参数。 语法是
=Parameters![FieldName].Value
。例如你的情况=Parameters!datastart.Value
.
此外,请注意必须在“参数”下的“报告数据”窗口中声明参数。它与您用来声明记录集的窗口相同,但是也有一个特殊的参数类别。数据类型也有一些选项,如果指定参数是强制性的。
因此,当您创建报告定义(rdl 或 rdlc 文件)时,您必须添加名称完全相同的参数。因此,对于您的情况,您必须添加
datastart
和 dataStop
参数。要做到这一点,只需单击报告数据窗口中的参数,然后单击添加新的。
试试这个:
ReportParameter PrmInvoiceNo = new ReportParameter("PrmInvoiceNo");
PrmInvoiceNo.Values.Add(this.InvNo.ToString());
this.reportViewer1.LocalReport.SetParameters(PrmInvoiceNo);
开发商:来自克什米尔的 Bilal Ahmad 解决了: =FormatNumber(CDec((Parameters!prmInstallment1.Value))+ CDec((Parameters!Installment2.Value)))