次の方法で共有


レポートのバインド

「プロジェクトの設定」では、CrystalReportViewer コントロールを Web フォームまたは Windows フォーム上に保存しました。前のステップでは、CustomersViaIDR レポートをプロジェクトに追加しました。

ここでは、CustomersViaIDR レポートをインスタンス化し、それを CrystalReportViewer コントロールにバインドします。

レポートをインスタンス化してバインドするには、次の 2 つの方法があります。

  • 埋め込みレポートとして。
  • 埋め込みでないレポートとして。

以下の手順のいずれかを選択します。

  • 埋め込みレポートを使用する場合は、次の手順に従って、CustomersViaIDR レポートを埋め込みレポートとしてインスタンス化します。
  • 埋め込みでないレポートを使用する場合は、2 つ目の手順に従って、CustomersViaIDR レポートを埋め込みでないレポートとしてインスタンス化します。

CustomersViaIDR レポートを埋め込みレポートとしてインスタンス化して CrystalReportViewer コントロールにバインドする

  1. Web フォームまたは Windows フォームを開きます。

  2. [表示]メニューの[コード]をクリックします。

  3. 変数名 customersViaIdrReport を使って、CustomersViaIDR レポートのラッパー クラスに新しいクラス レベルの宣言を追加します。アクセス修飾子を private に設定します。

    Private customersViaIdrReport As CustomersViaIDR
    
    private CustomersViaIDR customersViaIdrReport;
    
  4. ConfigureCrystalReports() メソッド内で、レポート ラッパー クラスをインスタンス化します。

    Note

    ConfigureCrystalReports() メソッドは「プロジェクトの設定」で作成されました。

    customersViaIdrReport = New CustomersViaIDR()
    
    customersViaIdrReport = new CustomersViaIDR();
    
  5. レポートをインスタンス化した次の行で、CrystalReportViewer コントロールの ReportSource プロパティを、インスタンス化したレポート クラス(変数名は customersViaIdrReport)にバインドします。

    myCrystalReportViewer.ReportSource = customersViaIdrReport
    
    crystalReportViewer.ReportSource = customersViaIdrReport;
    

CustomersViaIDR レポートを埋め込みではないレポートとしてインスタンス化して CrystalReportViewer コントロールにバインドする

これでプロジェクトをビルドして実行することができます。次の節にジャンプします。

  1. Web フォームまたは Windows フォームを開きます。

  2. [表示]メニューの[コード]をクリックします。

  3. 変数名 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>で &quot;Imports&quot; [Visual Basic] または &quot;using&quot; [C#] 宣言を追加しました。ReportDocument をインスタンス化して名前空間にレポートをロードする際は、レポートを埋め込まずに SDK を介してレポートにアクセスします。</p></td>
</tr>
</tbody>
</table>

``` vb
Private customersViaIdrReport As ReportDocument
```

``` csharp
private ReportDocument customersViaIdrReport;
```
  1. 「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッドで、ReportDocument クラスをインスタンス化します。

    customersViaIdrReport = New ReportDocument()
    
    customersViaIdrReport = new ReportDocument();
    
  2. 文字列変数を宣言して reportPath という名前をつけ、ローカル レポートの実行時パスを代入します。このパスは、Web サイトと Windows プロジェクトで異なります。

    • Web サイトでは、ローカル レポート ファイルの名前は文字列パラメータとして Server.MapPath() メソッドに渡されます。これによってローカル レポートは、実行時にハード ドライブのファイル ディレクトリ パスにマップされます。

      Dim reportPath As String = Server.MapPath("CustomersViaIDR.rpt")
      
      string reportPath = Server.MapPath("CustomersViaIDR.rpt");
      
    • Windows プロジェクトでは、バック スラッシュを使って、Application.StartupPath プロパティをローカル レポート ファイル名と連結します。これによって、レポートは同じディレクトリに Windows 実行ファイルとしてマップされます。

      Note

      コンパイル時に、実行ファイルを含むディレクトリにレポートをコピーします。

      Dim reportPath As String = Application.StartupPath & "\" &
      "CustomersViaIDR.rpt"
      
      string reportPath = Application.StartupPath + "\\"
      +"CustomersViaIDR.rpt";
      
  3. ReportDocument インスタンスの Load() メソッドを呼び出し、reportPath 文字列変数を渡します。

``` vb
customersViaIdrReport.Load(reportPath)
```

``` csharp
customersViaIdrReport.Load(reportPath);
```
  1. 次の行のレポートのロードの下で、CrystalReportViewer の ReportSource プロパティを、ReportDocument インスタンスにバインドします。

    myCrystalReportViewer.ReportSource = customersViaIdrReport
    
    crystalReportViewer.ReportSource = customersViaIdrReport;
    

CustomersViaIDR レポートのロードをテストする

埋め込みレポートのクラスまたは ReportDocument クラスによる埋め込みではないレポートのどちらを選択してインスタンス化しているかに関係なく、使用する変数名は同じです(customersViaIdrReport)。これによって、その後の手順で共通のコードを使用できます。

これでプロジェクトをビルドして実行することができます。

  1. [ビルド]メニューで[ソリューションのビルド]を選択します。

  2. ビルド エラーが発生した場合は、ここで修正します。

  3. 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>
  1. [デバッグ]メニューの[開始]をクリックします。

    レポートが表示され、IDataReader 静的メソッドのデータが表示されます。

  2. Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。