我正在报表查看器中生成报表。使用单个数据集,效果很好,但我需要在同一报告中包含多个数据集。你能告诉我我在做什么错(如果可能的话,附上一些代码)。我发现了有关此问题的大量信息,但并非所有内容都使用相同的编程语言。我正在使用C#。在.RDLC中,我创建了一个数据源和2个数据集(DataSet和DataSet1)。这是我当前的代码:
private void LoadReport()
{
try
{
MySqlConnection con = new MySqlConnection(conSettings.ToString());
MySqlCommand cmd = new MySqlCommand("packing_slips", con);
MySqlCommand cmd1 = new MySqlCommand("client_info", con);
con.Open();
cmd.Parameters.Add("@project", MySqlDbType.VarChar, 20).Value = project_id_box.Text;
cmd.CommandType = CommandType.StoredProcedure;
cmd1.Parameters.Add("@project", MySqlDbType.VarChar, 20).Value = project_id_box.Text;
cmd1.CommandType = CommandType.StoredProcedure;
MySqlDataAdapter adp = new MySqlDataAdapter(cmd);
MySqlDataAdapter adp1 = new MySqlDataAdapter(cmd1);
DataSet ds = new DataSet();
DataSet ds1 = new DataSet();
adp.Fill(ds);
adp1.Fill(ds1);
reportViewer1.Reset();
this.reportViewer1.LocalReport.DataSources.Clear();
ReportDataSource reportDataSource = new ReportDataSource();
reportDataSource.Value = ds.Tables[0];
reportDataSource.Name = "DataSet";
ReportDataSource reportDataSource1 = new ReportDataSource();
reportDataSource1.Value = ds1.Tables[0];
reportDataSource1.Name = "DataSet1";
this.reportViewer1.LocalReport.DataSources.Add(reportDataSource);
this.reportViewer1.LocalReport.DataSources.Add(reportDataSource1);
this.reportViewer1.LocalReport.ReportPath = "project_report.rdlc";
this.packing_slipsTableAdapter.Fill(this.shopmanagerDataSet.packing_slips);
this.projectsTableAdapter.Fill(this.shopmanagerDataSet.projects);
this.reportViewer1.RefreshReport();
con.Close();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
编译时没有出现任何编译错误,但报告为空白。我正在使用存储过程从MySQL数据库中检索数据。调试时,我看到ds和ds1正在正确填充。谢谢。
答案 0 :(得分:0)
我找到了答案。将多个数据集添加到RDLC时,需要在文本框属性中指定信息来自哪个数据集。 EG:
=第一个(Fields!project_number.Value,“ DataSet”)
这为我解决了。上面的代码对其他遇到此问题的人都是有用的。