ReportDocument.FileName プロパティを使ったアンマネージド RAS サーバーへのバインド
注 |
---|
このページでは、Crystal Reports for Visual Studio では使用できなかったが、アップグレード バージョンで使用可能になった機能について説明します。Crystal Reports for Visual Studio の詳細については、「Crystal Reports for Visual Studio について」を参照してください。アップグレード バージョンについての詳細情報は、「アップグレード オプション」を参照してください。 |
オブジェクト モデル
このレポートをバインドするシナリオでは ReportClientDocument を使用しています(「ReportClientDocument オブジェクト モデルによるレポートのバインド(RAS)」を参照してください)。
レポートの場所
このシナリオでは、既存の埋め込みレポートを使用します。コードのレポート ラッパー クラスを通じて、埋め込みレポートの参照を継続できますが、FileName プロパティを使用してアンマネージド RAS サーバー(「Report Application Server(RAS)」を参照)に置かれている外部(高速)コピーに埋め込みレポートをリダイレクトします。
注 |
---|
レポートは最終的にリモート サーバーから表示されるため、このレポートをバインドするシナリオは、(レポートをバインドするシナリオ「ReportDocument クラスにロードされる埋め込みでないレポートへのバインド」で実装されているように、)埋め込みでないレポートにも利用できます。 |
説明
レポートをバインドするシナリオ「ReportDocument.Load() メソッドを使ったアンマネージド RAS へのバインド」を最適化したバージョンです。
Crystal Reports for Visual Studio で埋め込みレポートと ReportDocument オブジェクト モデルによって作成されたプロジェクトは、アンマネージド RAS サーバーへ容易にポートできます。
このシナリオでは、埋め込みレポート(Crystal Reports 用に設計されたもの)を実行時にアンマネージド RAS サーバーにバインドします。また RAS サーバーから直接アクセス可能なフォルダにレポートのコピーを置くことで、パフォーマンスをさらに最適化します。そのために、次のようにコードを 2 行追加します。
- RAS サーバー名を ReportDocument.ReportAppServer プロパティに割り当てます。
- RAS にアクセス可能なディレクトリ パスの文字列を、ReportDocument.FileName プロパティに渡します。
また、埋め込みでないレポートをアンマネージド RAS サーバーにバインドすることもできます。これを実行するには、「ReportDocument クラスにロードされる埋め込みでないレポートへのバインド」で説明されているように、ReportDocument.Load(String filename) メソッドへの呼び出しを削除し、上のステップで説明されているコードに置き換えます。
このシナリオでは、Crystal Reports Developer で、ReportDocument オブジェクト モデルを使用する埋め込みレポートまたは埋め込みでないレポートを、ReportClientDocument オブジェクト モデルを使用する RAS サーバーに直接バインドできることを示します。どうしてそれが可能なのでしょうか。それは、Crystal Reports 10 では ReportDocument オブジェクト モデルが、ReportClientDocument オブジェクト モデルを指定するプロキシ層として再度書き込まれたためです。詳細については、アーキテクチャの「ReportClientDocument オブジェクト モデル(RAS)」を参照してください。
しかし、「ReportDocument.Load() メソッドを使ったアンマネージド RAS へのバインド」のデフォルトのシナリオでは、パフォーマンスが制限されます。埋め込みレポートが RAS サーバーにロードされるたびに、パフォーマンスは低下します。パフォーマンスを向上させるために、レポートのコピーをRAS サーバーで表示されるファイル ディレクトリに置き、次にディレクトリ パスの文字列をレポート インスタンスの FileName プロパティに渡します。
注 |
---|
FileName プロパティは、マネージド RAS サーバーからレポートを参照します。マネージド RAS サーバー上のレポートは、埋め込みレポートとバージョンや名前が異なっていても、常に表示されます。 |
基本となる ReportClientDocument オブジェクト モデルは、ReportDocument.ReportClientDocument プロパティから直接アクセスでき、ReportClientDocument オブジェクト モデルによって実行時にレポートを修正することができます。サンプル コードは以下の実装セクションを参照してください。
長所
- ReportDocument オブジェクト モデルを使用するレポートと対話するオリジナル コードをすべて管理できます。同時に、基本となる ReportClientDocument オブジェクト モデルへのフル アクセスが、ReportDocument.ReportClientDocument プロパティによって可能になります。
注 ReportClientDocument オブジェクト モデルを使用すると、レポート定義ファイルの作成、編集、および変更の保存をプログラミングできます。詳細については、アーキテクチャの「ReportClientDocument オブジェクト モデル(RAS)」を参照してください。
- Report Application Server(RAS)の優れたレポート エンジンの処理能力によって、パフォーマンスが向上します。詳細については、「Business Objects レポーティング ソリューションのアーキテクチャの比較」を参照してください。
- レポートのコピーを、RAS サーバーから表示可能なファイル ディレクトリに作成すると、パフォーマンスが向上します。
短所
- コードを多少追加する必要があります。レポートが CrystalReportViewer コントロールと ReportDocument にバインドされるごとに、コードを 2 行追加する必要があります。サンプル コードは以下の節を参照してください。
- 埋め込みレポートのコピーをファイル ディレクトリに作成し、RAS サーバーから表示させると、メンテナンス作業が増大します。レポートを修正または削除する場合は、Visual Studio プロジェクトの埋め込みレポートと、RAS サーバーに表示されているディレクトリ内にあるレポートのコピーの両方に対して、このような変更を反映させる必要があります。
- アンマネージド RAS にアップグレードすると、レポートのパフォーマンスが大幅に向上しますが、アンマネージド RAS にアップグレードした場合ほどの効果はありません。
埋め込みレポートのコピーを、表示されるファイル ディレクトリから、指定されたアンマネージド RASサーバーにロードする
- アンマネージド Report Application Server(RAS)10 がインストールされ、正しく動作する。
- ネットワーク上でアンマネージド RAS サーバーの名前を特定し、書き込みます。この例では、サーバー名は“RAS01”です。
この手順は、「プロジェクトの設定」で作成されたプロジェクトにのみ有効です。「プロジェクトの設定」では、この手順で必要な特定の名前空間の参照とコード設定が説明されており、この設定は、この手順を完了するために必須です。したがって、この手順を始める前にまず、「プロジェクトの設定」の手順を実行しておく必要があります。
RAS は Web プロジェクトでのみ機能します。
「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッドには、レポートをバインドする次のコードがあります。
2 行のコードの間に、2 つのことを実行するための新しいコード を 2 行(ステップ 2 から 4 を参照)追加します。次に、レポートを CrystalReportViewer コントロールにバインドします。
- ネットワーク上のアンマネージドRAS サーバーを特定する。
- レポートのコピーを置く場所のファイル パスを設定する。
Dim hierarchicalGroupingReport As Hierarchical_Grouping = New Hierarchical_Grouping() myCrystalReportViewer.ReportSource = hierarchicalGroupingReport
Hierarchical_Grouping hierarchicalGroupingReport = new Hierarchical_Grouping(); crystalReportViewer.ReportSource = hierarchicalGroupingReport;
hierarchicalGroupingReport がインスタンス化された後で、hierarchicalGroupingReport 変数の ReportApplicationServer プロパティに RAS サーバーの名前を入力します。
hierarchicalGroupingReport.ReportAppServer = "RAS01"
hierarchicalGroupingReport.ReportAppServer = "RAS01";
レポートを RAS サーバーの C ドライブ上の Report Application Server 10 ディレクトリにコピーします。C:\Program Files\Crystal Decisions\Report Application Server 10\Reports\
次に、レポートへのファイル パスをコードに入力し、先頭に“RAS”プロトコルを付けます。
<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>これが、RAS のレポートを保存するディレクトリへのデフォルトのパスになります。RAS サーバーは、他のレポート パスを“アクセス拒否”エラーによって却下する場合があります。</p></td>
</tr>
</tbody>
</table>
[「プロジェクトの設定」](ms227453\(v=vs.90\).md)からレポートをバインドするコードは、このコード行に続きます。
``` vb
hierarchicalGroupingReport.FileName = "ras://C:\Program Files\Crystal Decisions" _ & "\Report Application Server 10\Reports" _ & "\Hierarchical_Grouping.rpt"
```
``` csharp
hierarchicalGroupingReport.FileName = "ras://C:\\Program Files\\Crystal Decisions" + "\\Report Application Server 10\\Reports" + "\\Hierarchical_Grouping.rpt";
```
- レポートを表示するには、プロジェクトをビルドおよび実行してください。
レポートはファイル パスからロードされ、アンマネージド Report Application Server(RAS)から提供されます。
ReportClientDocument オブジェクト モデル内から ReportDocument オブジェクト モデルにアクセスするには、「ReportDocument.Load() メソッドを使ったアンマネージド RAS へのバインド」のコード セクションを参照してください。