localreport 中具有多个数据集 运行 的 ReportViewer

ReportViewer with multiple dataset running in localreport

我需要使用两个数据源在本地处理模式下执行 ReportViewer,但第二个有问题。

我用报表生成器 3 设计报表,它 运行 很好(两个数据集都填满了各自的 tables)。

但是当我在 C# 中呈现报表时,第二个数据集是空的,这是代码:

SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandType = CommandType.Text;
cmd.CommandText = nodoDataSet[0].FirstChild.InnerText.ToString().Replace("@Id", id.ToString());
System.Data.DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());

SqlCommand cmd2 = new SqlCommand();
cmd2.Connection = con;
cmd2.CommandType = CommandType.Text;
cmd2.CommandText = nodoDataSet[1].FirstChild.InnerText.ToString().Replace("@Id", id.ToString());
System.Data.DataTable dt2 = new DataTable();
dt2.Load(cmd2.ExecuteReader());

con.Close();

ReportViewer viewer = new ReportViewer();
viewer.ProcessingMode = ProcessingMode.Local;
viewer.LocalReport.ReportPath = urlReporte;
viewer.LocalReport.DataSources.Add(new ReportDataSource() { Name = "Consulta", Value = dt });
viewer.LocalReport.DataSources.Add(new ReportDataSource() { Name = "Consulta2", Value = dt2 });
viewer.LocalReport.EnableExternalImages = true;

List<ReportParameter>() parametros = new List<ReportParameter>(){
    new ReportParameter("Id",id.ToString()),
};
viewer.LocalReport.SetParameters(parametros);
pdf.Add(viewer.LocalReport.Render("PDF"));

我打开 xml 读取 SQL 查询并替换参数,运行 服务器中的查询并加载一个数据表,我为每个查询都这样做命令获取数据。

然后只需将这两个数据源添加到报表中并将其呈现为 PDF。

问题是在代码中,第二个table仍然是空的:

好:http://i.imgur.com/6wWpVMA.png

不好:http://i.imgur.com/JJz3K33.png

所以,问题是,为什么?

谢谢!

我终于找到了解决办法!

我只是检查了“数据源属性”对话框中的 "User single transaction when processing the queries" 选项,它起作用了!