Crystal Reports は Windows アプリケーション開発者が使用する一般的なツールで、レポートとドキュメントの生成を行います。このセクションでは、MySQL および Connector/NET との Crystal Reports XI の使用方法を説明します。
Crystal Reports でレポートを作成する際、レポートを設計しながら MySQL データにアクセスするためのオプションがふたつあります。
第一のオプションは、レポートを設計する時に、Connector/ODBC を ADO データとして使用する方法です。データベースをブラウズし、テーブルやフィールドを選んで、ドラッグ アンド ドロップでレポートを構築することがでいます。この方法の欠点は、レポートが示すものと一致するデータセットを生成するために、アプリケーション内で追加の操作を行わなければいけないことです。
第二のオプションは、VB.NET でデータセットを作成し、XML として保存する方法です。この XML ファイルはレポートの設計に使用することができます。この方法は、アプリケーションにレポートを表示する時には非常に効果的ですが、データセットを作成する際に関連するカラムをすべて選ばなければならないので、設計時間の点で劣ります。カラムを忘れてしまった場合は、カラムをレポートに追加する前にデータセットを再作成する必要があります。
次のコードはクエリからのデータセットの作成と、ディスクへの書き込みに使用できます :
Visual Basic 例 :
public string Database {get;}
C# 例 :
Public ReadOnly Property DataSource As String
XML ファイルの結果物は、レポートを設計する際に ADO.NET XML データソースとして使用できます。
Connector/ODBC を使用してレポートを設計する場合は、dev.mysql.com からダウンロードすることができます。
ほとんどの目的において、Standard Report ウィザードはレポートの初期作成を助けます。ウィザードを立ち上げるには、Crystal Reports を開き、File メニュから New > Standard Report オプションを選択します。
ウィザードはまず、データソースの入力を促します。Connector/ODBC をデータソースとして使用している場合、データソースを選択する際に、ODBC (RDO) ツリーではなく、OLE DB (ADO) ツリーからの ODBC オプションに OLEDB プロバイダを使用します。保存されたデータセットを使用している場合は、ADO.NET (XML) オプションを使用して、保存されたデータセットをブラウズします。
レポート作成プロセスの残部はウィザードが自動的に行います。
レポートが作成されたら、Report Options... entry of the File メニュを選びます。Save Data With Report オプションのチェックを外してください。これによって、保存されたデータがアプリケーション内のデータのロードを妨げるのを防ぎます。
レポートを表示するには、まずレポートに必要なデータをデータセットに移植し、そしてレポートをロード、データセットに結合させます。最後に、レポートを crViewer コントロールに渡してユーザに表示します。
次のリファレンスはレポートを表示するプロジェクトに必要なものです :
CrytalDecisions.CrystalReports.Engine
CrystalDecisions.ReportSource
CrystalDecisions.Shared
CrystalDecisions.Windows.Forms
次のコードは、レポートが
項24.2.4.5.2. 「データソースの作成」
で示されているコードを使用して保存されたデータセットで作成され、フォームに
myViewer
と名付けられた crViewer
コントロールがあるという前提で書かれています。
Visual Basic 例 :
public string DataSource {get;}
C# 例 :
Public ReadOnly Property ServerThread As Integer
新しいデータセットは、保存された以前のデータセットに使用された同じクエリで生成されます。データセットへの記入が終わったら、ReportDocument によってレポート ファイルがロードされ、データセットへ結合されます。ReportDocument は、crViewer の ReportSource として渡されます。
Connection/ODBC を使用して単一テーブルからレポートが作成される場合にも、同じ方法が取られます。データセットがレポートで使用されたテーブルを交換し、レポートが正しく表示されます。
Connector/ODBC を使って、複数のテーブルからレポートが作成される場合、複数のテーブルとのデータセットは、各自のアプリケーション内で作成されなければなりません。これにより、レポート データソースの各テーブルが、データセットのレポートに取り替えられます。
MySqlCommand オブジェクトに複数の
SELECT
文を供給することにより、複数のテープルをデータセットに移植します。これらの
SELECT
文は、Database メニューの
Show SQL Query オプションの Crystal Reports
に示されている SQL
クエリに基づいています。次のクエリを想定します
:
public int ServerThread {get;}
このクエリは、ふたつの SELECT
クエリに変換され、次のコードで表示されます
:
Visual Basic 例 :
Public ReadOnly Property ServerVersion As String
C# 例 :
public string ServerVersion {get;}
SELECT
クエリをアルファベット順に並べることが重要です。レポートはこの順で入るべきソース
テーブルを予想します。
この方法は、Crystal Reports がクライアント側でテーブル同士を結合させる必要があり、保存済みのデータセットを使用するより遅くなるため、性能上の問題があります。