这是我使用SSRS的第一份报告。
我正在尝试使用asp.net中的SSRS生成报告。
我的需求是:
我想创建一个包含多个表(4个表)的报表,这些表彼此有关系。我已经为每个单独的表配置了接受1个参数,例如:
我尝试的是:
我创建了一个包含4个表的dataset.xsd,并给出了这些表之间的关系。 然后我创建了一个report.rdlc并设计了一个包含四个表的报告,并将所需的字段拖放到表中,并创建了一个名为ID的报告参数。
我得到的错误是:
A data source instance has not been supplied for the data source 'DataSet2'
我在按钮点击的cs页面中写的是:
protected void BtnGo_Click(object sender, EventArgs e)
{
DataSet2TableAdapters.TB_TransReceiptTableAdapter ta = new DataSet2TableAdapters.TB_TransReceiptTableAdapter();
DataSet2.TB_TransReceiptDataTable dt = new DataSet2.TB_TransReceiptDataTable();
ta.Fill(dt,Convert.ToInt16( TxtID.Text));
//ta.Fill(dt,TxtID.Text);
ReportDataSource rds = new ReportDataSource();
rds.Name = "DataSet2";
rds.Value = dt;
ReportParameter rp = new ReportParameter("ID", TxtID.Text.ToString());
rptviewer.LocalReport.DataSources.Clear();
rptviewer.LocalReport.ReportPath = "Report1.rdlc";
rptviewer.LocalReport.SetParameters(new ReportParameter[] { rp });
rptviewer.LocalReport.DataSources.Add(rds);
rptviewer.LocalReport.Refresh();
rptviewer.Visible = true;
}
我寻求的帮助是:
我不知道如何通过代码绑定报告,因为我有四个表与外键相互关联。上面是我使用的代码,但它会引发错误。
如果有人帮我解决这个问题,我将非常感激。
提前致谢。
答案 0 :(得分:0)
根据tgolisch而不是table i Bound数据集并传递给报告它工作正常。 而且我还创建了一个视图而不是四个单独的表。它使我的工作变得简单
private DataTable getData()
{
DataSet dss = new DataSet();
string sql = "";
sql = "SELECT * from VW_TransReciptReport WHERE tREC_NUPKId='" + TxtID.Text + "'";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
da.Fill(dss);
DataTable dt = dss.Tables[0];
return dt;
}
private void runRptViewer()
{
this.rptviewer.Reset();
ReportParameter rp = new ReportParameter("ID", TxtID.Text.ToString());
this.rptviewer.LocalReport.ReportPath = Server.MapPath("ReportReceipt.rdlc");
rptviewer.LocalReport.SetParameters(new ReportParameter[] { rp });
ReportDataSource rdsB = new ReportDataSource("DataSet1_VW_TransReciptReport", getData());
this.rptviewer.LocalReport.DataSources.Clear();
this.rptviewer.LocalReport.DataSources.Add(rdsB);
this.rptviewer.DataBind();
this.rptviewer.LocalReport.Refresh();
}