次の方法で共有


ReportDocument.FileName プロパティを使ったアンマネージド RAS サーバーへのバインド

Note

このページでは、Crystal Reports for Visual Studio では使用できなかったが、アップグレード バージョンで使用可能になった機能について説明します。Crystal Reports for Visual Studio の詳細については、「Crystal Reports for Visual Studio について」を参照してください。アップグレード バージョンについての詳細情報は、「アップグレード オプション」を参照してください。

オブジェクト モデル

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

レポートの場所

このシナリオでは、既存の埋め込みレポートを使用します。コードのレポート ラッパー クラスを通じて、埋め込みレポートの参照を継続できますが、FileName プロパティを使用してアンマネージド RAS サーバー(「Report Application Server(RAS)」を参照)に置かれている外部(高速)コピーに埋め込みレポートをリダイレクトします。

Note

レポートは最終的にリモート サーバーから表示されるため、このレポートをバインドするシナリオは、(レポートをバインドするシナリオ「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 プロパティに渡します。

Note

FileName プロパティは、マネージド RAS サーバーからレポートを参照します。マネージド RAS サーバー上のレポートは、埋め込みレポートとバージョンや名前が異なっていても、常に表示されます。

基本となる ReportClientDocument オブジェクト モデルは、ReportDocument.ReportClientDocument プロパティから直接アクセスでき、ReportClientDocument オブジェクト モデルによって実行時にレポートを修正することができます。サンプル コードは以下の実装セクションを参照してください。

長所

  • ReportDocument オブジェクト モデルを使用するレポートと対話するオリジナル コードをすべて管理できます。同時に、基本となる ReportClientDocument オブジェクト モデルへのフル アクセスが、ReportDocument.ReportClientDocument プロパティによって可能になります。
    Note

    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 プロジェクトでのみ機能します。

  1. 「プロジェクトの設定」で作成した 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;
    
  2. hierarchicalGroupingReport がインスタンス化された後で、hierarchicalGroupingReport 変数の ReportApplicationServer プロパティに RAS サーバーの名前を入力します。

    hierarchicalGroupingReport.ReportAppServer = "RAS01"
    
    hierarchicalGroupingReport.ReportAppServer = "RAS01";
    
  3. レポートを RAS サーバーの C ドライブ上の Report Application Server 10 ディレクトリにコピーします。C:\Program Files\Crystal Decisions\Report Application Server 10\Reports\

  4. 次に、レポートへのファイル パスをコードに入力し、先頭に“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";
```
  1. レポートを表示するには、プロジェクトをビルドおよび実行してください。
レポートはファイル パスからロードされ、アンマネージド Report Application Server(RAS)から提供されます。

ReportClientDocument オブジェクト モデル内から ReportDocument オブジェクト モデルにアクセスするには、「ReportDocument.Load() メソッドを使ったアンマネージド RAS へのバインド」のコード セクションを参照してください。

関連項目