「プロジェクトの設定」の指示に従ってこのチュートリアルの準備をするときに、CrystalReportViewer コントロールを Web フォームに配置しました。ただし、レポート パーツを表示するには、CrystalReportPartsViewer コントロールを使用する必要があります。
ここでは、Customers レポートをインスタンス化し、これを CrystalReportPartsViewer コントロールにバインドします。次に、前の手順で作成したレポート パーツがレポートに表示されるかどうかをテストします。
レポートをインスタンス化してバインドするには、次の 2 つの方法があります。
- 埋め込みレポートとして。
- 埋め込みでないレポートとして。
以下の手順のいずれかを選択します。
- 埋め込みレポートを使用する場合は、次の手順に従って、レポートを埋め込みレポートとしてインスタンス化します。
- 埋め込みでないレポートを使用する場合は、2 番目の手順に従って、レポートを埋め込みでないレポートとしてインスタンス化します。
「レポートのデータのフィルタ」に進みます。
Customers レポートを埋め込みレポートとしてインスタンス化して CrystalReportPartsViewer コントロールにバインドする
Web フォームを開きます。
[表示]メニューの[デザイナ]をクリックします。
CrystalReportViewer コントロールを削除します。
ツールボックスで Crystal Reports ノードを開き、CrystalReportPartsViewer コントロールを探します。
CrystalReportPartsViewer コントロールを Web フォームにドラッグします。
プロパティ ウィンドウで、ID プロパティを以下のように設定します。
- Visual Basic Web サイトの場合は、ID プロパティに“myCrystalReportPartsViewer”と設定します。
- C# Web サイトの場合は、ID プロパティに“crystalReportPartsViewer”と設定します。
[表示]メニューから[コード]をクリックし、この Web フォームの分離コード クラスを表示します。
変数名 customerReport で、Customers レポートのラッパー クラスに新しいクラス レベルの宣言を追加します。アクセス修飾子を private に設定します。
Private customersReport As Customers
private Customers customersReport;
ConfigureCrystalReports() メソッド内で、レポート ラッパー クラスをインスタンス化します。
注
ConfigureCrystalReports() メソッドは「プロジェクトの設定」で作成されました。
customersReport = New Customers()
customersReport = new Customers();
レポート インスタンス化の下にある行で、CrystalReportPartsViewer コントロールの ReportSource プロパティに、インスタンス化したレポート クラス(変数名は customerReport)をバインドします。
myCrystalReportPartsViewer.ReportSource = customersReport
crystalReportPartsViewer.ReportSource = customersReport;
注
コントロールを各自の Web フォームまたは Windows フォームに追加したので、CrystalReportPartsViewer コントロールのインスタンスにコードでアクセスできます。IntelliSense が CrystalReportPartsViewer コントロール インスタンスを認識しない場合は、CrystalReportPartsViewer コントロールがクラス レベルの宣言としてこの分離コード クラスに追加されていることを確認します。
Customers レポートを埋め込みではないレポートとしてインスタンス化して CrystalReportPartsViewer コントロールにバインドする
これでプロジェクトをビルドして実行することができます。
Web フォームを開きます。
[表示]メニューの[コード]をクリックします。
変数名 customersReport で、ReportDocument レポートのラッパー クラスに新しいクラス レベルの宣言を追加します。アクセス修飾子を private に設定します。
``` vb
Private customersReport As ReportDocument
```
``` csharp
private ReportDocument customersReport;
```
<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>
「プロジェクトの設定」の手順で追加した ConfigureCrystalReports() メソッドで、ReportDocument クラスをインスタンス化します。
customersReport = New ReportDocument()
customersReport = new ReportDocument();
文字列変数を宣言して reportPath という名前をつけ、ローカル レポートの実行時パスを代入します。このパスは、Web サイトと Windows プロジェクトで異なります。
Web サイトでは、ローカル レポート ファイルの名前は文字列パラメータとして Server.MapPath() メソッドに渡されます。これによってローカル レポートは、実行時にハード ドライブのファイル ディレクトリ パスにマップされます。
Dim reportPath As String = Server.MapPath("Customers.rpt")
string reportPath = Server.MapPath("Customers.rpt");
Windows プロジェクトでは、バック スラッシュを使って、Application.StartupPath プロパティをローカル レポート ファイル名と連結します。これによって、レポートは同じディレクトリに Windows 実行ファイルとしてマップされます。
注
コンパイル時に、実行ファイルを含むディレクトリにレポートをコピーします。
Dim reportPath As String = Application.StartupPath & "\" & "Customers.rpt"
string reportPath = Application.StartupPath + "\\" + "Customers.rpt";
ReportDocument インスタンスの Load() メソッドを呼び出し、reportPath 文字列変数を渡します。
``` vb
customersReport.Load(reportPath)
```
``` csharp
customersReport.Load(reportPath);
```
次の行のレポートのロードの下で、CrystalReportPartsViewer の ReportSource プロパティを、ReportDocument インスタンスにバインドします。
myCrystalReportPartsViewer.ReportSource = customersReport
crystalReportPartsViewer.ReportSource = customersReport;
Customers レポートのロードをテストする
埋め込みレポートのクラスまたは ReportDocument クラスによる埋め込みではないレポートのどちらを選択してインスタンス化しているかに関係なく、使用する変数名は同じです(customersReport)。これによって、その後の手順で共通のコードを使用できます。
これでプロジェクトをビルドして実行することができます。この時点では、市パラメータ フィールドの値を設定するコードを書き込んでいないため、レポートのロードに失敗するはずです。“市”パラメータ フィールドには後で値を追加します。
[ビルド]メニューの[ソリューションのビルド]をクリックします。
ビルド エラーが発生した場合は、ここで修正します。
[デバッグ]メニューの[開始]をクリックします。
Customers レポートが Web ブラウザに表示されます。
国をクリックして地域のリストを表示します。
地域をクリックして、“顧客名”、“前年度取引高”および“市”フィールドを表示します。
Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。