【发布时间】:2015-11-30 15:19:13
【问题描述】:
我开发了一个 SSRS 报告,其中包含一个主报告和 3 个子报告。 我从 C# 调用此报告。 我只知道如何将主rdlc与数据集绑定。
我使用下面的代码
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlcomm);
dataAdapter.Fill(dataset);
this.reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\sale_dept.rdl";
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dataset.Tables[0]));
this.reportViewer1.RefreshReport();
当我运行 exe 时,报表查看器中充满了主报表,但 3 个子报表显示错误,因为我没有为这些子报表指定数据源
- 主报表和其他子报表之间没有参数传递
- 主报表和所有子报表的数据集名称默认为 DataSet1
请指导我将子报表与适当的查询数据集表绑定。 我完全被困在这里了。
已编辑
我用 1 个子报表更改了我的项目。
在 SSRS 中,它在(BIDS)编辑器中运行良好,但从 C# 调用时出现错误:
在指定位置找不到。请确认子报告已发布且名称正确。
我的代码:
subreportevenhandler according to this question
question for subreport event handler
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlcomm);
dataAdapter.Fill(dataset);
this.reportViewer1.LocalReport.ReportPath = Application.StartupPath + "\\sale_dept.rdl";
this.reportViewer1.LocalReport.DataSources.Clear();
this.reportViewer1.LocalReport.SubreportProcessing +=
new SubreportProcessingEventHandler(addsubreport);
this.reportViewer1.LocalReport.DataSources.Add(new Microsoft.Reporting.WinForms.ReportDataSource("DataSet1", dataset.Tables[0]));
this.reportViewer1.RefreshReport();
void addsubreport(object sender, SubreportProcessingEventArgs e)
{
SqlConnection conn = new SqlConnection(source);
DataSet dataset = new DataSet();
conn.Open();
SqlCommand sqlcomm = new SqlCommand( "Query for subreport", conn);
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlcomm);
dataAdapter.Fill(dataset);
e.DataSources.Add(new ReportDataSource("DataSet1", dataset.Tables[0]));
}
我仍然收到子报告的错误 我将所有 .rdl 文件移至 C# bin 文件夹..
主报告正确显示数据。在 SSRS 中很好..
【问题讨论】:
-
并且子报表控件(例如 Tablix)绑定到 Dataset1s 字段?是共享数据集吗,怎么配置的?
-
@JeremyThompson 没有每个报告都有它的查询和数据集...但是所有报告的数据集名称都是 Dataset1
-
@JeremyThompson 是的..但是在 SSRS 中我的报告工作正常,因为没有参数传递..查询是硬代码..查询是在执行期间在 C# 中构建的,由 dataadapter 填充的数据表是作为报告的数据源..对不起,如果我错了..我对这个 SSRS 很天真
-
@Sachu 在您的 RDL 中调用子报表时,请提供 绝对路径 而不是相对路径。
SubReport Properties > General > Use this report as subreport
标签: c# reporting-services ssrs-2008 subreport