1

次の問題があります。クライアントの 1 つで rdlc レポートを生成するアプリケーションを作成しました。TableAdapters を使用して、これらのレポートで使用する DataTables を埋めました。問題は、クライアントが新しいデータベースを持っていて、そのアプリケーションを使用して古いデータベースと新しいデータベースの両方からレポートを生成できるようにしたいということです。TableAdapter が使用する接続を変更して、クライアントが選択したデータベース (両方のデータベースのスキーマが同じ) からデータを取得するように変更することは可能だと思いましたが、それはできないと言われました。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 に答える