2009-07-16 21 views
4

我正在學習使用Crystal Reports(使用VB 2005)。如何在沒有緊密鏈接的數據庫連接的情況下使用Crystal Reports?

到目前爲止,我所見過的大部分內容都是直接從數據庫中啜食數據,如果這是您想要在報告中顯示的所有內容,那很好。

我的數據庫有很多外鍵,所以我試圖保持理智的方式,在我的應用程序中呈現實際的信息是向我的對象中添加額外的成員,這些成員包含外鍵代表的字符串(描述) 。像:

Class AssetIdentifier 

    Private ID_AssetIdentifier As Integer 
    Private AssetID As Integer 
    Private IdentifierTypeID As Integer 
    Private IdentifierType As String 
    Private IdentifierText As String 

    ... 

在這裏,IdentifierTypeID是一個外鍵,我在不同的表中查找值,並將其放置在IdentifierType中。這樣我就可以在對象中使用文本描述,並且可以將其與其他內容一起執行。

因此,關於我的Crystal Reports問題。

Crystal Reports似乎很容易將特定表格中的記錄(特別是專家)與記錄聯繫起來,但這就是你所得到的。

理想情況下,我想使我的類的列表,像

Dim assetIdentifiers as New List(Of AssetIdentifier) 

,並傳遞到水晶報表,而不是做一個緊密鏈接到一個特定的數據庫中,有大部分所做的工作對我來說,但是讓我去解決它沒有做的部分。迄今爲止我能看到的最接近的是一個ADO.NET數據集,但即使這個數據集似乎已經被刪除了。我已經自己處理查詢了:我有各種基於查詢返回List(Of Whatever)的函數。

有沒有簡單的方法來做到這一點?

在此先感謝!

UPDATE: OK,我發現這裏的東西:

http://msdn.microsoft.com/en-us/library/ms227595(VS.80).aspx

但它只是似乎給這個能力對於Web項目或Web應用程序。如果我想要集成到獨立應用程序中,我運氣不好嗎?

回答

3

繼續按照您發佈的鏈接中所述創建庫存對象,並按照指定的方式創建報告(StockObjects報表)。在這個簡單的例子中,我只需將一個報表查看器(crystalReportViewer1)添加到窗體(Form1)中,然後在Form_Load事件中使用以下代碼。

stock s1 = new stock("AWRK", 1200, 28.47); 
stock s2 = new stock("CTSO", 800, 128.69); 
stock s3 = new stock("LTWR", 1800, 12.95); 

ArrayList stockValues = new ArrayList(); 

stockValues.Add(s1); 
stockValues.Add(s2); 
stockValues.Add(s3); 

ReportDocument StockObjectsReport = new StockObjectsReport(); 
StockObjectsReport.SetDataSource(stockValues); 

crystalReportViewer1.ReportSource = StockObjectsReport; 

這應該使用Windows窗體中庫存對象的3個值填充報表。

編輯:對不起,我只是意識到你的問題是在VB中,但我的例子是在C#中。你應該得到一般的想法。 :)

+0

謝謝!我不得不超越這個教程僅適用於Web應用程序的概念。 – John 2009-07-21 04:42:30

+0

@Dusty您的解決方案運行不正確。給異常StockObjectsReport.SetDataSource(stockValues);在這條線上。 – AsifQadri 2011-08-01 07:10:46

+0

@AsifQadri你有沒有解決這個問題?我有同樣的問題。 – 2014-03-26 02:10:04

0

我加載通過文件名的報告,它是工作完美:

//........ 

ReportDocument StockObjectsReport; 

string reportPath = Server.MapPath("StockObjectsReport.rpt"); 

StockObjectsReport.Load(reportPath); 

StockObjectsReport.SetDataSource(stockValues); 

//Export PDF To Disk 

string filePath = Server.MapPath("StockObjectsReport.pdf"); 

StockObjectsReport.ExportToDisk(ExportFormatType.PortableDocFormat, filePath); 
相關問題