キャッシュされた埋め込みレポート クラスへのバインド
オブジェクト モデル
このレポートをバインドするシナリオでは ReportDocument を使用しています(「ReportDocument オブジェクト モデルによるレポートのバインド」を参照)。
レポートの場所
レポートはプロジェクトに埋め込まれます。
説明
レポートが Visual Studio プロジェクトに埋め込まれると、プロジェクトのレポート ファイルを表示するレポート ラッパー クラスが自動的に生成されます。同時に、そのレポートのキャッシュ管理ユーティリティ クラスも自動的に生成されます。
「埋め込みレポート クラスへのバインド」で説明されています。
このシナリオでは、CrystalReportViewer コントロールをキャッシュ管理ユーティリティ クラスにバインドし、ASP.NET Cache オブジェクトにキャッシュされるレポートを自動的に処理するようにします。
![]() |
---|
レポートのキャッシュとキャッシュ管理ユーティリティ クラスの詳細については、「通常のレポートとキャッシュされたレポートの選択」を参照してください。 |
キャッシュの使用
キャッシュは限定された特有の使い方をします。システム リソースが慎重に管理されていない場合は、システム リソースを過度に消費する可能性があります。
埋め込みでないレポートのキャッシュ
埋め込みでないレポートのキャッシュを管理する場合は、個人用のキャッシュ管理ユーティリティ クラスを作成する必要があります。詳細については、「キャッシュ管理ユーティリティ クラスにロードされる埋め込みでない Report クラスへのバインド」を参照してください。
長所
- 共有性:共有性が高く、パラメータやログオン情報の変更を少なくしてレポートを保存するのに最適です。
- データ アクセスの最適化:共有能力に優れたレポートが膨大である場合、またはクエリーが大変複雑で取得するのに時間を要する場合も、キャッシュ管理ユーティリティ クラスによってデータへの迅速なアクセスが可能です。
短所
- サーバーの負荷:ASP.NET Cache オブジェクトに保存されるレポートによって、サーバー上でメモリ リソースに負荷がかかる場合があります。
- 永続の問題:キャッシュにはある種の依存性があり、それによってレポート インスタンス上の変更の確認や、レポート インスタンスの再キャッシュが可能になります。しかし、データベースが変更された場合、キャッシュに存在するレポート インスタンスは更新されないため、変更が反映されません。
- リソースの消費:パラメータを指定したレポートが、異なるパラメータ文字列で頻繁に呼び出されると、特にそのパラメータの 1 つがユーザー ID である場合は、その都度レポートが新しくキャッシュされます。これがシステム リソースを消費します。レポートの共有性が高くなければ、レポート インスタンスは代わりに Session オブジェクトに割り当てられます。詳細については、「Session と ReportDocument オブジェクト モデルの永続」を参照してください。
キャッシュ管理ユーティリティ クラスにバインドする
![]() |
---|
この手順は、「プロジェクトの設定」で作成されたプロジェクトにのみ有効です。「プロジェクトの設定」では、この手順で必要な特定の名前空間の参照とコード設定が説明されており、この設定は、この手順を完了するために必須です。したがって、この手順を始める前にまず、「プロジェクトの設定」の手順を実行しておく必要があります。 |
「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッド内で、既存のコードを削除し、レポート ラッパー クラスをキャッシュ管理ユーティリティ クラスで置き換えます。
Hierarchical Grouping.rpt と関連するキャッシュ管理ユーティリティ クラスをインスタンス化します。
``` vb
Dim cachedHierarchicalGroupingReport As CachedHierarchical_Grouping
= New CachedHierarchical_Grouping()
```
``` csharp
CachedHierarchical_Grouping cachedHierarchicalGroupingReport = new
CachedHierarchical_Grouping();
```
- キャッシュ管理ユーティリティ インスタンスを CrystalReportViewer コントロールに渡します。
``` vb
myCrystalReportViewer.ReportSource = cachedHierarchicalGroupingReport
```
``` csharp
crystalReportViewer.ReportSource = cachedHierarchicalGroupingReport;
```
- レポートを表示するには、プロジェクトをビルドおよび実行してください。