1

我有以下问题。我制作了一个为我的一个客户生成 rdlc 报告的应用程序。我使用 TableAdapters 来填充我在这些报告中使用的 DataTables。问题是我的客户有一个新数据库,他希望能够使用该应用程序从旧数据库和新数据库生成报告。我认为可以更改我的 TableAdapters 使用的连接,以便他们只从我的客户端选择的数据库中获取数据(两个数据库具有相同的架构),但我被告知无法做到这一点。那么是否可以更改 rdlc 报告使用的 DataTable?我怎么解决这个问题

4

2 回答 2

3

您可以使用以下代码在运行时将任何数据表分配给 rdlc。

        DataTable dtTest =obj.SelectDepartment(1);//Here I am selecting the data from DB

        this.reportViewer1.RefreshReport();
        reportViewer1.Visible = true;
        ReportDataSource rds = new ReportDataSource();
        reportViewer1.Reset();
        reportViewer1.ProcessingMode = ProcessingMode.Local;
        LocalReport rep = reportViewer1.LocalReport;
        rep.Refresh();

        rep.ReportEmbeddedResource = "Report.rdlc";//Provide full path
        rds.Name = "DataSet1_tblAdapter";//Provide refrerence to data set which is used to   design the rdlc. (DatasetName_TableAdapterName)
        rds.Value = dtTest;

        rep.DataSources.Add(rds);
        this.reportViewer1.RefreshReport();
于 2012-04-16T06:16:59.763 回答
1

当然,动态更改报告的数据源应该没问题

  rptView.LocalReport.ReportPath = Server.MapPath("MyReportName")
  rptView.LocalReport.DataSources.Add(New ReportDataSource("DataSource", "ObjectSource"))

对不起,代码是 VB.net,我知道你的问题被标记为 C#,但它应该足够相似

编辑:

如果你想要一些参数

    dim listOfParams = new List(of ReportParameter);
    listOfParams.Add(new ReportParameter("Param1", myValue.toString()))
    listOfParams.Add(new ReportParameter("Param2", myOtherValue.toString()))


    Me.rptView.LocalReport.GetParameters(listOfParams)

只是直接编码,所以它很可能是 C# 和 VB.net 的混合体

于 2012-04-12T13:08:35.560 回答