【问题标题】:A data source instance has not been supplied for the data source 'DataSet2'-SSRS尚未为数据源“DataSet2”-SSRS 提供数据源实例
【发布时间】:2014-06-25 13:25:40
【问题描述】:

这是我使用 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;
        }

我寻求的帮助是:

我不知道如何通过代码绑定报表,因为我有四个用外键相互关联的表。以上是我使用的代码,但它会引发错误。

如果有人能帮助我解决这个问题,我将非常感激。

提前致谢。

【问题讨论】:

  • 没有重复,因为在配置时我在数据集中使用了查询作为>
  • 另外,听起来您的报告使用了四个表格,而您只加载了一个表格并绑定了表格而不是数据集(包含所有四个表格)。我看对了吗?
  • 是的! ...但我真的不知道如何一次绑定四个表:(
  • 我认为你错过了 S/O 的意义。当然,每个报告都会使用不同的查询。但是,编程概念将非常相似。即,在重复解决方案中,答案指出您的数据表需要在数据集中和报表中具有相同的名称。我很确定这是您的解决方案。

标签: c# asp.net reporting-services


【解决方案1】:

根据 tgolisch 而不是 table i 绑定数据集并传递给报告它工作正常。 而且我创建了一个视图而不是四个单独的表。它使我的工作变得简单

 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();
        }

【讨论】:

    猜你喜欢
    • 2011-02-12
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多