2012-04-12 71 views
1

我有以下问题。我制作了一个为我的客户之一生成rdlc报告的应用程序。我使用TableAdapters来填充我在这些报告中使用的DataTable。问题是我的客户有一个新的数据库,他希望能够使用该应用程序来生成旧的和新的报告。我认为有可能改变我的TableAdapter使用的连接,以便他们仅从我的客户端选择的数据库中获取数据(两个数据库都具有相同的模式),但我被告知不能这样做。那么是否可以更改rdlc报告使用的DataTable? 我怎样才能解决这个问题如何以编程方式更改rdlc报表中的DataTables

回答

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(); 
+0

谢谢,我在此期间设法解决了这个问题,它与您的解决方案几乎完全相同。 – NDraskovic 2012-04-16 07:30:40

+1

需要参考:使用Microsoft.Reporting.WinForms; – tuncalik 2013-12-25 16:46:20

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的混合。

+0

无论它在VB中,Web上都有翻译。只有一件事,我看到你使用了Server类,但这是一个桌面应用程序,那么等价的是什么? – NDraskovic 2012-04-12 13:14:27

+0

我还没有尝试过这一点,但我想象的只是一个字符串指向rdlc文件,像“〜/ MyReports/Report1.rdlc” – 2012-04-12 13:18:44

+0

好吧,谢谢,我会试试看,看看会发生什么 – NDraskovic 2012-04-12 13:20:36

相关问题