2014-08-28 34 views
0

我的項目中有兩個水晶報表。如何部署水晶報表WPF應用程序

我在我的項目中有SaleBillReport.rpt文件。 正在使用報告對象方法加載,代碼如下。

首先報告顯示爲 -

案例1:

SaleBillReport rptObj = new SaleBillReport();//My Rpt file name 
rptObj.SetDataSource(_ReportDataSet); 

_reportViewer.ReportSource = rptObj; 

第二份報告顯示爲 -

案例2:

ReportDocument objReportDoc = new ReportDocument(); 
objReportDoc.Load(@"D:\\" + "MyReport.rpt"); 

ReportViewerNew.ReportSource = objReportDoc; 

我的問題是在部署此項目時,我不需要將任何.rpt文件放在任何地方。 它在我的應用程序中內置。

但是我必須把我的第二個.rpt文件放到任何顯示路徑中(我不想放在任何地方) 那麼我如何在部署期間在我的項目中構建第2個.rpt文件。

在此先感謝

+0

您正在使用哪種部署方法?安裝項目或點擊一次或別的東西? – 2014-08-28 07:12:30

+0

只是在發佈模式下構建應用程序。 – prashant 2014-08-28 09:53:19

回答

0

使用反射來找出你的應用程序安裝

System.Reflection.Assembly.GetExecutingAssembly

Method explantion

,並要求該程序集的文件夾並添加您的報告文件名到該路徑...

0

一個解決方案可以使用反射但它有點棘手。

第二個和更簡單的將使用Environment.CurrentDirectory

爲此,修改案例2這樣的代碼 -

ReportDocument objReportDoc = new ReportDocument(); 
string reportPath = System.IO.Path.Combine(Environment.CurrentDirectory, "MyReport.rpt"); 
objReportDoc.Load(reportPath); 

ReportViewerNew.ReportSource = objReportDoc; 

,併爲您的報告是在當前目錄中的位置始終是永久性的,就到你的MyReport.rpt文件的屬性,然後選擇複製總是複製如果更新

+0

如果我會選擇複製,那麼它會在.exe文件夾中創建.rpt文件。我不想那樣做。 – prashant 2014-08-28 09:59:08

相關問題