标签: reportparameter

为什么我的报告在设置报告参数时会抛出异常?

好吧,我的情况是我在表单上有一个报表查看器,它根据选择连接多个报表.我将所有报告设置为构建操作的嵌入式资源.

在设置参数之前,我正在加载这样的报告.

myReportViewer.LocalReport.ReportEmbeddedResource = "MyApp.MyReport1.rdlc";
Run Code Online (Sandbox Code Playgroud)

要么

myReportViewer.LocalReport.ReportEmbeddedResource = "MyApp.MyReport2.rdlc";
Run Code Online (Sandbox Code Playgroud)

这种情况很奇怪.假设我运行应用程序并首先选择MyReport1并运行它.该报告是保存参数的报告.MyReport2没有任何参数,只有数据源.MyReport1将正确加载,一切运行完美.然后,我可以切换到MyReport2,并根据需要在两个报告之间来回切换.

假设我先运行MyReport2.它正确加载,我可以多次运行它.但是,如果我切换回MyReport1,它会在尝试设置参数时抛出以下异常.

An attempt was made to set a report parameter 'TotalTime' that is not defined in this report.
Run Code Online (Sandbox Code Playgroud)

看看这个异常我会假设MyReport1由于某种原因没有加载.当我设置LocalReport.ReportEmbeddedResource时.什么会导致MyReport1无法正确加载只是因为我没有先使用它?

这是代码,我当然修剪了一些我无法展示的作品.

if (ReportComboBox.SelectedItem.ToString() == "Time by user") {
     myReportViewer.LocalReport.DataSources.Clear();
     ReportDataSource datasource = new ReportDataSource();
     datasource.Name = "DataSet1";
     datasource.Value = DataSet1BindingSource;
     myReportViewer.LocalReport.DataSources.Add(datasource);
     try {
          myReportViewer.LocalReport.ReportEmbeddedResource = "";
          myReportViewer.LocalReport.ReportEmbeddedResource = "MyApp.MyReport1.rdlc";
          ReportParameter test = new ReportParameter("TotalTime", total.ToString("c"));
          myReportViewer.LocalReport.SetParameters(test);
          myReportViewer.RefreshReport();
     } catch (Exception ex) { 

     }
} else if (ReportComboBox.SelectedItem.ToString() == "Time - Everyone") …
Run Code Online (Sandbox Code Playgroud)

c# reportviewer reportparameter

2
推荐指数
1
解决办法
3719
查看次数

报告VS 2010和我的问题

我创建了一个WinForms应用程序,并在表单上使用ReportViewer,并.rdlc为它设计了一个report().在我的报告中,我选择了我的表和存储过程,并为我的存储过程定义了参数,并在表单的表单加载事件中写道:

private void Form1_Load(object sender, EventArgs e)
{
     // TODO: This line of code loads data into the 'testoDataSet.Table2' table. You can move, or remove it, as needed.
     this.Table2TableAdapter.Fill(this.testoDataSet.Table2);

     ReportParameter pa = new ReportParameter("Name", "abc");
     ReportParameter pa1 = new ReportParameter("Family", "xyz");

     reportViewer1.LocalReport.SetParameters(new ReportParameter[] { pa, pa1 });
     reportViewer1.LocalReport.Refresh();

     this.reportViewer1.RefreshReport();
 }
Run Code Online (Sandbox Code Playgroud)

但是当我运行我的应用程序时,我的报表查看器上显示了所有记录,但我的选择查询是

select * 
from User 
where Name = 'abc' and Family = 'xyz';
Run Code Online (Sandbox Code Playgroud)

怎么了??

c# reporting reportparameter visual-studio-2010

0
推荐指数
1
解决办法
335
查看次数