2011-12-27 64 views
0

你好我正在計劃一個應用程序,它基本上是一個使用ODBC dsn-less連接字符串的數據庫(專有Pervasive SQL)的報告前端。在運行時創建一個包含動態表的Crystal Report

我能夠在Visual Studio中創建數據集並將報告鏈接到應用程序。但是,在現實世界的使用情況下,數據庫的位置會因用戶而異。這不是主要問題。我用連接字符串克服了這個問題,它允許你設置數據庫路徑的位置。

這裏的踢球者...

,我想從一個獨特的文件名(其實我上面提到的相同名稱)的前綴來讀取表的名稱。我需要在運行時重新映射表名。只是表名前綴真的。字段的字段和名稱不會更改。

任何想法,我應該尋找寫這個塊?如果有幫助,我正在使用VS2010 & C#。我認爲你應該是Crystal的某些類文件,它可以執行一些運行時反射來獲取/設置表名?

任何想法都會受到歡迎和讚賞。 Rob

編輯:我發現一些文檔link有API文檔和其他支持。我會研究他們。它們都是.chm文件(Windows幫助文件),因此沒有「在線」文檔可供搜索。

回答

0
  • 添加一個水晶的ReportViewer將名稱更改爲objReport
  • 添加一個公共職能ShowReport()

    public void ShowReport(ReportDocument objReport) 
    { 
        Cursor.Current = Cursors.WaitCursor; 
        objReport.SetDatabaseLogon("", "dbpassword"); 
        cRep.ReportSource = objReport; 
        this.Show(); 
        Cursor.Current = Cursors.Default; 
    } 
    

而在你的應用程序從任何地方調用它

ds = GetDataInDataSet();//fILL DataSet with your data 
rptPSummary objRpt = new rptPSummary(); 
objRpt.SummaryInfo.ReportComments = "Have a nice day"; 
objRpt.SummaryInfo.ReportTitle = "Purchase Summary Report from " + sDate.ToString("dd/MM/yyyy") + " to " + eDate.ToString("dd/MM/yyyy"); 
objRpt.SetDataSource(ds); 

frmReportView frmRpt = new frmReportView(); 
frmRpt.Text = objRpt.SummaryInfo.ReportTitle; 
frmRpt.MdiParent = this; 
frmRpt.ShowReport(objRpt); 
+0

謝謝回覆!所以看起來數據集是什麼決定了表名是什麼?當您將數據集傳遞給報告時,它如何知道要查詢哪個表? – Robnauticus 2011-12-28 08:12:25