レポートのバインド
「プロジェクトの設定」では、CrystalReportViewer コントロールを Web フォームまたは Windows フォーム上に保存しました。前のステップでは、CustomersViaIDR レポートをプロジェクトに追加しました。
ここでは、CustomersViaIDR レポートをインスタンス化し、それを CrystalReportViewer コントロールにバインドします。
レポートをインスタンス化してバインドするには、次の 2 つの方法があります。
- 埋め込みレポートとして。
- 埋め込みでないレポートとして。
以下の手順のいずれかを選択します。
- 埋め込みレポートを使用する場合は、次の手順に従って、CustomersViaIDR レポートを埋め込みレポートとしてインスタンス化します。
- 埋め込みでないレポートを使用する場合は、2 つ目の手順に従って、CustomersViaIDR レポートを埋め込みでないレポートとしてインスタンス化します。
CustomersViaIDR レポートを埋め込みレポートとしてインスタンス化して CrystalReportViewer コントロールにバインドする
Web フォームまたは Windows フォームを開きます。
[表示]メニューの[コード]をクリックします。
変数名 customersViaIdrReport を使って、CustomersViaIDR レポートのラッパー クラスに新しいクラス レベルの宣言を追加します。アクセス修飾子を private に設定します。
Private customersViaIdrReport As CustomersViaIDR
private CustomersViaIDR customersViaIdrReport;
ConfigureCrystalReports() メソッド内で、レポート ラッパー クラスをインスタンス化します。
注 ConfigureCrystalReports() メソッドは「プロジェクトの設定」で作成されました。
customersViaIdrReport = New CustomersViaIDR()
customersViaIdrReport = new CustomersViaIDR();
レポートをインスタンス化した次の行で、CrystalReportViewer コントロールの ReportSource プロパティを、インスタンス化したレポート クラス(変数名は customersViaIdrReport)にバインドします。
myCrystalReportViewer.ReportSource = customersViaIdrReport
crystalReportViewer.ReportSource = customersViaIdrReport;
CustomersViaIDR レポートを埋め込みではないレポートとしてインスタンス化して CrystalReportViewer コントロールにバインドする
これでプロジェクトをビルドして実行することができます。次の節にジャンプします。
Web フォームまたは Windows フォームを開きます。
[表示]メニューの[コード]をクリックします。
変数名 customersViaIdrReport を使用して、ReportDocument レポートのラッパー クラスに新しいクラスレベルの宣言を追加します。アクセス修飾子を private に設定します。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" alt="Note" class="note" />注</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>ReportDocument クラスは、CrystalDecisions.CrystalReports.Engine 名前空間に含まれます。この名前空間には、<a href="ms227453(v=vs.90).md">「プロジェクトの設定」</a>で "Imports" [Visual Basic] または "using" [C#] 宣言を追加しました。ReportDocument をインスタンス化して名前空間にレポートをロードする際は、レポートを埋め込まずに SDK を介してレポートにアクセスします。</p></td>
</tr>
</tbody>
</table>
``` vb
Private customersViaIdrReport As ReportDocument
```
``` csharp
private ReportDocument customersViaIdrReport;
```
「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッドで、ReportDocument クラスをインスタンス化します。
customersViaIdrReport = New ReportDocument()
customersViaIdrReport = new ReportDocument();
文字列変数を宣言して reportPath という名前をつけ、ローカル レポートの実行時パスを代入します。このパスは、Web サイトと Windows プロジェクトで異なります。
Web サイトでは、ローカル レポート ファイルの名前は文字列パラメータとして Server.MapPath() メソッドに渡されます。これによってローカル レポートは、実行時にハード ドライブのファイル ディレクトリ パスにマップされます。
Dim reportPath As String = Server.MapPath("CustomersViaIDR.rpt")
string reportPath = Server.MapPath("CustomersViaIDR.rpt");
Windows プロジェクトでは、バック スラッシュを使って、Application.StartupPath プロパティをローカル レポート ファイル名と連結します。これによって、レポートは同じディレクトリに Windows 実行ファイルとしてマップされます。
注 コンパイル時に、実行ファイルを含むディレクトリにレポートをコピーします。
Dim reportPath As String = Application.StartupPath & "\" & "CustomersViaIDR.rpt"
string reportPath = Application.StartupPath + "\\" +"CustomersViaIDR.rpt";
ReportDocument インスタンスの Load() メソッドを呼び出し、reportPath 文字列変数を渡します。
``` vb
customersViaIdrReport.Load(reportPath)
```
``` csharp
customersViaIdrReport.Load(reportPath);
```
次の行のレポートのロードの下で、CrystalReportViewer の ReportSource プロパティを、ReportDocument インスタンスにバインドします。
myCrystalReportViewer.ReportSource = customersViaIdrReport
crystalReportViewer.ReportSource = customersViaIdrReport;
CustomersViaIDR レポートのロードをテストする
埋め込みレポートのクラスまたは ReportDocument クラスによる埋め込みではないレポートのどちらを選択してインスタンス化しているかに関係なく、使用する変数名は同じです(customersViaIdrReport)。これによって、その後の手順で共通のコードを使用できます。
これでプロジェクトをビルドして実行することができます。
[ビルド]メニューで[ソリューションのビルド]を選択します。
ビルド エラーが発生した場合は、ここで修正します。
Windows プロジェクトで埋め込みでないレポートを使用する場合、コンパイルされた Windows 実行ファイルを \bin\ [Visual Basic] または \bin\debug\ [C#] サブディレクトリ内で探し、レポートをそのサブディレクトリにコピーします。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/w5dk7atd.alert_note(ja-jp,VS.90).gif" title="Note" alt="Note" class="note" />注</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>埋め込みでないレポートが、実行時に Windows 実行ファイルによってロードされるようにするには、レポートを Windows 実行ファイルと同じディレクトリに格納する必要があります。</p></td>
</tr>
</tbody>
</table>
[デバッグ]メニューの[開始]をクリックします。
レポートが表示され、IDataReader 静的メソッドのデータが表示されます。
Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。