2009-07-16 3 views
4

私はCrystal Reports(VB 2005)を使用する方法を学んでいます。緊密にリンクされたDB接続なしでCrystal Reportsを使用するにはどうすればよいですか?

私が今まで見たことの大部分は、データベースから直接データをスラッシングすることです。レポートに表示したい場合は問題ありません。

私のDBにはたくさんの外部キーがあるので、私のアプリに実際の情報を提示することに慣れてきたのは、外部キーが表す文字列(説明)を含むオブジェクトに追加メンバーを追加することです。 Like:

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) 

のように、私のクラスのリストを作成し、特定のDBへのタイトなリンクをしているのではなく、Crystalレポートにそれを渡したいのですが、行われる作業のほとんどを持っています私のために、しかし私はそれをしない部分を回避するために私を残しました。私が見ることのできる最も近いのは、ADO.NETのデータセットですが、これははるかに削除されているようです。私はすでにクエリを自分で処理しています。クエリに基づいてList(Of Whatever)を返す関数がすべて用意されています。

これを行う簡単な方法はありますか?

ありがとうございます!

UPDATE: OK、私はここで何かが見つかりました:

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

をそれだけでWebプロジェクトやWebアプリケーションのため、この機能を提供するように見えます。私がスタンドアロンアプリケーションに統合したいのであれば、私は運が悪いのですか?

答えて

3

投稿したリンクの説明に従って株オブジェクトを作成し、指定したとおりにレポート(StockObjectsReport)を作成します。この簡単な例では、レポートビューア(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つの値を使用してレポートを移入する必要があります。

EDIT:申し訳ありませんが、私はあなたの質問がVBであることに気付きましたが、私の例はC#です。あなたは一般的な考えを得るべきです。 :)私はファイル名でレポートをロードすることだし、それが完璧に動作している

+0

ありがとうございました!私はこのチュートリアルがウェブアプリケーションのためだけであるという考えを超えなければならなかった。 – John

+0

@Dustyあなたの解決策は正しく実行されていません。例外を与えるStockObjectsReport.SetDataSource(stockValues);この行で – AsifQadri

+0

@AsifQadriこれを解決しましたか?私は同じ問題を抱えています。 –

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); 
関連する問題