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