次の方法で共有


プロジェクトに適したオブジェクト モデルの選択

目的のプロジェクトに適したオブジェクト モデルを選択するには、CrystalReportViewer コントロールの操作方法に関するベスト プラクティスを理解し、CrystalReportViewer が他のオブジェクト モデルとどのように対話するのかを知る必要があります。

CrystalReportViewer コントロールの操作のベスト プラクティス

機能性の高い Web アプリケーションは、その表現層と基本のビジネス ロジックを明確に区別します。

ASP.NET コントロールのデザインでは、この点がさらに明確に区別されます。つまり、表現情報をコントロールにカプセル化し、その上でこのコントロールを基本オブジェクトやビジネス ロジックを実行するオブジェクト モデルにバインドします。

CrystalReportViewer は、このアーキテクチャを維持する .NET コントロールです。これは、表現層である Web フォームや Windows フォームの表示オブジェクトとして機能し、次の任意のレポート オブジェクト モデルにバインドできます。

  • ReportDocument オブジェクト モデル
  • 次のオブジェクト モデルはアップグレードによって入手できます。
    • ReportClientDocument オブジェクト モデル(Report Application Server)
    • InfoObject オブジェクト モデル(Crystal Reports Server または BusinessObjects Enterprise)

ベスト プラクティスのシナリオでは、通常はレポート操作のために、ビジネス ロジックを実行するオブジェクト モデルの 1 つに CrystalReportViewer コントロールをバインドします。

このシナリオでは CrystalReportViewer コントロールは、プログラムによる対話を表示設定の変更(ビューアのツールバーやツールバー上のボタンの表示/非表示など)だけに制限します。

CrystalReportViewer オブジェクト モデル

CrystalReportViewer コントロールには、レポートの表示方法に関する対話を可能にするプロパティとメソッドが含まれます。また、コントロールにバインドしているレポートと対話するための少数のプロパティとメソッドも含まれています。これらのプロパティとメソッドにより、制限されたオブジェクト モデルが構成されます。

レポートをバインドするシナリオの一部は、CrystalReportViewer オブジェクト モデルを基本としています。これらのシナリオでは、レポートをオブジェクト モデルにカプセル化する手順を踏まずにパス文字列をファイル ディレクトリのレポートに渡すなどして、CrystalReportViewer コントロールをレポートに直接バインドします。そのようなシナリオでは、CrystalReportViewer コントロールがレポートを直接カプセル化するため、ユーザーはコントロールの制限されたこのオブジェクト モデルを使用してレポートとプログラムで対話する必要があります。

しかし、バインドに関する大部分のシナリオでは、CrystalReportViewer をオブジェクト モデルとして使用することは望ましくありません。その代わりに使用するのが ReportDocument オブジェクト モデルですが、その理由は次のとおりです。

  • CrystalReportViewer オブジェクト モデルを使用すると、オブジェクト モデルの衝突リスクが高くなります。詳細については、「オブジェクト モデルの混在の回避」を参照してください。
  • CrystalReportViewer オブジェクト モデルが提供するレポートとの対話には制限があります。このオブジェクト モデルには、ReportDocument オブジェクト モデルで利用できる機能の一部のサブセットしか含まれていません。
  • CrystalReportViewer オブジェクト モデルでは、作成するコードの表現層と基本のビジネス ロジックの区別があいまいになります。

ReportDocument オブジェクト モデル

ReportDocument は、CrystalReportViewer に比べてより強力でより豊富な機能を持つオブジェクト モデルです。このオブジェクト モデルは Crystal Reports for Visual Studio SDK に同梱され、コードでのレポートの操作に豊富な機能を提供します。

ReportDocumentオブジェクト モデルの説明および概念図については、「アーキテクチャ」「ReportDocument オブジェクト モデル」を参照してください。

ReportDocument オブジェクト モデルのコード化手順に関するチュートリアルについては、「ReportDocument オブジェクト モデルのチュートリアル」を参照してください。

適切なオブジェクト モデルの選択

Crystal Reports Server または BusinessObjects Enterprise へのアップグレードを予定していない場合、Crystal Reports SDK を使用する開発では ReportDocument オブジェクト モデルを使用することをお勧めします。

Note

Crystal Reports 10 以降のバージョンおよび Crystal Reports for Visual Studio 2005 以降では、ReportDocument オブジェクト モデルが ReportClientDocument オブジェクト モデルにブリッジされ、簡単にマネージド レポーティング ソリューションにアップグレードできるようになりました。