2008-12-16 209 views
0

使用Visual Studio 2005和Crystal Reports的默認安裝。Visual Studio中的Crystal Reports數據源

當我創建一個報表時,Crystal詢問數據庫,並將其發送給我的開發數據庫。在應用程序中,我創建了一個DataTable並將其傳遞給報告,然後將報告交給CR查看器。在運行時,報告對象和查看器都不需要查看數據庫,因爲我已經檢索了表。

當應用程序交給用戶時,一切正常。他們無法看到開發數據庫。

有一次,在生產部門,我在生產站點創建了一個報告,而不是通過指定開發數據庫來創建Crystal報表,我給了它生產數據庫。回到我自己的辦公室,在VS中運行,報告試圖連接到開發數據庫,​​並失敗。 (這是不可見的。)

因此,它不是一個問題,他們無法看到我的開發數據庫,​​但它是一個問題,我看不到生產數據庫。

問題是:這是否是因爲在VS中運行與運行已安裝的應用程序不同?爲什麼報告試圖連接到數據庫呢?我如何控制它?

回答

1

我想我下面......

當你正在尋找在VS的.RPT,數據庫字段的字段資源管理器窗口中右鍵單擊,然後轉到「設置數據源位置」。它爲您的連接顯示了什麼?它是否指向生產數據庫服務器?該設置將存儲在.rpt文件中,以便解釋您的問題。

1

當您創建報告時,您應該能夠執行report.SetDataSouce(DataSet)並將其傳遞給包含報告使用的表的數據集。

0

問題是:這是否是因爲在VS中運行與運行已安裝的應用程序不同?爲什麼報告試圖連接到數據庫呢?我如何控制它?

您可以根據使用的DataTable報告內容

如果您的報告包含一個表,你通過這個表,報告控制它,報告將正常工作

但 報告試圖連接到當您的數據表不提供所有報表數據的時候,通常你的報告中有2個或多個表

在這種情況下,你需要通過數據集來報告原DB位置包含所有表

這裏我的代碼使用2表格作者和titleauthor

'Build a SQL statement to query for the authors table 

Dim sqlString As String = "SELECT * FROM authors" 

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter = New OleDbDataAdapter(sqlString, adoOleDbConnection) 

'Build a SQL statement to query for the titleauthor table 

sqlString = "SELECT * FROM titleauthor" 

'Retrieve the data using the SQL statement 

adoOleDbDataAdapter2 = New OleDbDataAdapter(sqlString, adoOleDbConnection) 

'Create a instance of a Dataset 

DataSet1 = New DataSet() 

'Fill the dataset with the data with author information 

adoOleDbDataAdapter.Fill(DataSet1, "authors") 

'Fill the dataset with the data with titleauthor information. 
'The table name used in the Fill method must be identical to the name 
'of the table in the report. 

adoOleDbDataAdapter2.Fill(DataSet1, "titleauthor") 

'Pass the dataset to the report 

crReportDocument.Database.Tables(0).SetDataSource(DataSet1) 

'View the report 

CrystalReportViewer1.ReportSource = crReportDocument 
相關問題