次の方法で共有


ReportDocument クラスにロードされる埋め込みでないレポートへのバインド

オブジェクト モデル

このレポートをバインドするシナリオでは ReportDocument を使用しています(「ReportDocument オブジェクト モデルによるレポートのバインド」を参照)。

レポートの場所

レポートはファイル ディレクトリに保存されています。

説明

このレポートをバインドするシナリオでは、より優れた ReportDocument オブジェクト モデルを、埋め込みでないレポート(プロジェクトに埋め込まれないレポート)に使用できます。

「コードによるファイル ディレクトリ パスへのバインド」で、ファイル ディレクトリ パス文字列によってレポートをバインドします。ただし、ディレクトリ パスは直接ビューアにバインドせず、ReportDocument.Load() メソッドに渡します。これにより、ReportDocument オブジェクト モデルを使用できます。

Note

詳細については、「適切なオブジェクト モデルの選択」を参照してください。

また、各外部レポートは共通クラス ReportDocument にロードされるため、レポート選択プロセスを開発すれば、すべてのレポートに共通のレポート バインド コードを適用することができます。このコードは、次のレポートをバインドするシナリオ「ReportDocument にアップキャストする埋め込み Report クラスへのバインド」にある実装セクションのコードと類似しています。

長所

  • 容易なメンテナンス:アプリケーションを再コンパイルすることなく、レポートの追加、削除、または修正が可能です。
  • 幅広いプログラム上の対話:優れた ReportDocument オブジェクト モデルへのアクセスが可能になります。
  • 共有によるコードの削減:レポートをバインドするシナリオ「ReportDocument にアップキャストする埋め込み Report クラスへのバインド」で説明された方法と類似しています。すべてのレポートが共通の ReportDocument クラスにロードされるため、レポートはコードを共有できます。

短所

  • 限定された配布:レポートは、アプリケーションがインストールされたコンピュータで実行する必要があります。Web サーバーの ASPNET ユーザー アカウントから、ネットワーク上の他のサーバーへのアクセスは、通常制限されます。
  • デプロイメントに要する作業:レポートは、適切な相対パスでアプリケーションと共に配布される必要があります。
  • セキュリティの低いレポート ソース:デプロイメント コンピュータ上で、実行時にレポートが再配置または削除される危険性があります。

ReportDocument オブジェクト モデルを使用して埋め込みでないレポート クラスにバインドする

Note

この手順は、「プロジェクトの設定」で作成されたプロジェクトにのみ有効です。「プロジェクトの設定」では、この手順で必要な特定の名前空間の参照とコード設定が説明されており、この設定は、この手順を完了するために必須です。したがって、この手順を始める前にまず、「プロジェクトの設定」の手順を実行しておく必要があります。

  1. "Imports" [Visual Basic] 文または "using" [C#] 文を、CrystalDecisions.CrystalReports.Engine 名前空間クラスの先頭に追加します。

    Note

    名前空間の前置記号を付けずに ReportDocument クラスにアクセスするには、この名前空間を宣言する必要があります。

    Imports CrystalDecisions.CrystalReports.Engine
    
    using CrystalDecisions.CrystalReports.Engine;
    
  2. 特定のバージョンの Crystal Reports に同梱されている General Business サブディレクトリで、World Sales Report.rpt ファイルを探します。サンプル レポートについては、「サンプル レポートのディレクトリ」を参照してください。

  3. World Sales Report.rpt を含むすべてのファイル ディレクトリ パスをクリップボードにコピーします。

  4. 「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッドで、reportPath 文字列型変数を宣言し、前のステップでコピーした World Sales Report ファイル ディレクトリ パスを含む文字列を割り当てます。

    Dim reportPath As String = _
    "C:\Program Files\Microsoft Visual Studio 9.0\" _ & "Crystal Reports\Samples\En\Reports\General Business\" _ & "World Sales Report.rpt"
    
    string reportPath =
    "C:\\Program Files\\Microsoft Visual Studio 9.0\\" + "Crystal Reports\\Samples\\En\\Reports\\General Business\\" + "World Sales Report.rpt";
    
  5. 次の文字列宣言では、ReportDocument のインスタンスを宣言します。

    Dim myReportDocument As ReportDocument = New ReportDocument()
    
    ReportDocument reportDocument = new ReportDocument();
    
  6. ファイル ディレクトリ パスが含まれる文字列型変数を、埋め込みでないレポート クラスの ReportDocument にロードします。

    myReportDocument.Load(reportPath)
    
    reportDocument.Load(reportPath);
    
  7. CrystalReportViewer コントロールの ReportSource プロパティに、ReportDocument インスタンス(ロードされた埋め込みでないレポートが含まれています)を割り当てます。

    myCrystalReportViewer.ReportSource = myReportDocument
    
    crystalReportViewer.ReportSource = reportDocument;
    
  8. レポートを表示するには、プロジェクトをビルドおよび実行してください。

関連項目