次の方法で共有


レポートのバインドと値を入力したデータセットのデータソースの設定

このセクションでは、作成したレポートをインスタンス化し、レポートの DataSet に値を入力し、CrystalReportViewer コントロールにレポートを表示する方法を学習します。レポートに値を入力するには、データが入力された DataSet に SetDataSource プロパティを割り当てます。この DataSet は DataSetConfiguration クラスの CustomerDataSet プロパティから返されます。最後に、値を入力したレポートを CrystalReportViewer コントロールにバインドします。

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

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

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

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

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

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

  3. 変数名 customerReport で、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 customerReport As ReportDocument
```

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

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

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

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

      Note

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

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

``` vb
customerReport.Load(reportPath)
```

``` csharp
customerReport.Load(reportPath);
```
  1. DataSet を宣言して、それに DataSetConfiguration.CustomerDataSet property を割り当てます。

    Dim myDataSet As DataSet = DataSetConfiguration.CustomerDataSet
    
    DataSet dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. customerReport ReportDocument インスタンスの SetDataSource() メソッドを呼び出し、DataSet インスタンスを渡します。

``` vb
customerReport.SetDataSource(myDataSet)
```

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

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

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

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

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

  3. クラス署名の上で、"Imports"[Visual Basic] または "using"[C#] 宣言を System.Data 名前空間のクラスの先頭に追加します(まだ追加されていない場合)。

``` vb
Imports System.Data
```

``` csharp
using System.Data;
```
  1. 変数名 customerReport で、Customer レポートのラッパー クラスに新しいクラス レベルの宣言を追加します。アクセス修飾子を private に設定します。

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

    Note

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

    customerReport = New Customer()
    
    customerReport = new Customer();
    
  3. レポートをインスタンス化した次の行で、DataSet を宣言します。

このステップと次のステップでは、変数の宣言と割り当てを分離します。このチュートリアルにおける Web サイトのためのコードの追加では、DataSet を ASP.NET Cache オブジェクトにキャッシュするコード ブロックに変数の割り当てをリファクタするので、各コード行は 1 行ずつ独立して記述されます。

``` vb
Dim myDataSet As DataSet
```

``` csharp
DataSet dataSet;
```
  1. DataSet インスタンスを DataSetConfiguration.CustomerDataSet プロパティに割り当てます。

    myDataSet = DataSetConfiguration.CustomerDataSet
    
    dataSet = DataSetConfiguration.CustomerDataSet;
    
  2. Customerreport インスタンスの SetDataSource() メソッドを呼び出し、DataSet インスタンスを渡します。

``` vb
customerReport.SetDataSource(myDataSet)
```

``` csharp
customerReport.SetDataSource(dataSet);
```
  1. CrystalReportViewer コントロールの ReportSource プロパティを CustomerReport インスタンスにバインドします。

    myCrystalReportViewer.ReportSource = customerReport
    
    crystalReportViewer.ReportSource = customerReport;
    

Customer レポートのロードおよびデータが入力された DataSet をテストする

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

  1. [ビルド]メニューの[ソリューションのビルド]をクリックします。
  2. ビルド エラーが発生した場合は、ここで修正します。
  3. Windows プロジェクトで埋め込みでないレポートを使用する場合、コンパイルされた Windows 実行ファイルを \bin\ [Visual Basic] または \bin\debug\ [C#] サブディレクトリ内で探し、レポートをそのサブディレクトリにコピーします。
    Note

    埋め込みでないレポートが、実行時に Windows 実行ファイルによってロードされるようにするには、レポートを Windows 実行ファイルと同じディレクトリに格納する必要があります。

  4. [デバッグ]メニューの[開始]をクリックします。
  5. Customer レポートは、DataSet に格納されたデータを表示します。
  6. Visual Studio に戻り、[停止]ボタンをクリックして、デバッグ モードを終了します。

Windows プロジェクトを構築している場合は、これでチュートリアルは完了です。

Web サイトを構築する場合は、「Web サイトでのデータセットのキャッシュ 」に続きます。