次の方法で共有


レポートにキャストする InfoObject へのバインド

Note

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

オブジェクト モデル

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

レポートの場所

Crystal Reports Server または BusinessObjects Enterprise のサーバーに保存されます。

説明

InfoObject オブジェクト モデルは、Crystal Reports Server または BusinessObjects Enterprise で提供されます。システム内のすべての Enterprise 要素 (レポート、ユーザー、グループ、サーバー、サーバー グループ、フォルダ) は、プログラムして対話可能な情報オブジェクトとして扱われます。オブジェクト モデルのすべての情報オブジェクトは、同じ名前を持つ対応するクラスによって表されます。これらのクラスは InfoObject を継承します。

このオブジェクト モデルを使ってレポートをバインドするには、レポートを InfoObject インスタンスとしてラップして Crystal Reports Server または BusinessObjects Enterprise から取得します。この InfoObject インスタンスにバインドするには、CrystalReportViewer コントロールの ReportSource プロパティに InfoObject インスタンスを割り当てます。

長所

  • 特定の時間に実行するレポートのスケジュールに便利です。特有のパラメータを使用して、レポートの出力先に FTP、SMTP、ディスク、またはプリンタなどを指定できます。

短所

InfoObject としてラップされるレポートをバインドして Report にキャストする

  • Crystal Reports Server または BusinessObjects Enterprise がインストールされ、正しく動作する。
  • 開発を行うコンピュータに Crystal Reports Server または BusinessObjects Enterprise SDK(.NET アセンブリを含む)がインストールされている。
    Note

    Crystal Reports Server または BusinessObjects Enterprise を開発用のマシンにインストールしている場合、SDK はそのインストールに含まれます。

  • Crystal Reports Server または BusinessObjects Enterprise サーバーを探し、その名前をメモします。この例では、サーバー名は“BOE01”です。
Note

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

  1. 公開ウィザードを使って Chart.rpt を Crystal Reports Server または BusinessObjects Enterprise サーバーに公開します。
<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>公開ウィザードの使用方法については、Crystal Reports Server または BusinessObjects Enterprise のユーザー マニュアルを参照してください。</p>
<p>サンプル レポートについては、<a href="ms225622(v=vs.90).md">「サンプル レポートのディレクトリ」</a>を参照してください。</p></td>
</tr>
</tbody>
</table>
  1. 次のアセンブリ参照をプロジェクトに追加します。

    • CrystalDecisions.Enterprise.Framework
    • CrystalDecisions.Enterprise.InfoStore
    • CrystalDecisions.Enterprise.Desktop.Report
  2. 分離コード ページの最初に、"Imports" [Visual Basic] 文、または "using" [C#] 文を、CrystalDecisions.Enterprise 名前空間と CrystalDecisions.Enterprise.Desktop 名前空間に追加します。

``` vb
Imports CrystalDecisions.Enterprise
Imports CrystalDecisions.Enterprise.Desktop
```

``` csharp
using CrystalDecisions.Enterprise;
using CrystalDecisions.Enterprise.Desktop;
```

Crystal Reports Server または BusinessObjects Enterprise からのレポートを含む InfoObject インスタンスにバインドするコードを追加できるようになりました。
  1. 「プロジェクトの設定」で作成した ConfigureCrystalReports() メソッドで、serverName 文字列を宣言し、これを Crystal Reports Server または BusinessObjects Enterprise サーバーの名前に設定します。

    Dim serverName As String = "BOE01"
    
    string serverName = "BOE01";
    
  2. SessionMgr クラスを宣言およびインスタンス化します。

    Dim mySessionMgr As SessionMgr = New SessionMgr()
    
    SessionMgr sessionMgr = new SessionMgr();
    
  3. ユーザー名(Administrator)、パスワード(空白)、serverName 変数、およびログオン タイプ(secEnterprise)を SessionMgr インスタンスの Logon メソッドに渡し、EnterpriseSession インスタンスとして取得します。

    Dim myEnterpriseSession As EnterpriseSession = mySessionMgr.Logon(
    _
    "Administrator", "", serverName, "secEnterprise")
    
    EnterpriseSession enterpriseSession = sessionMgr.Logon(
    "Administrator", "", serverName, "secEnterprise");
    
  4. EnterpriseSession の GetService メソッドを使って、InfoStore サービスを(EnterpriseService として)取得します。

    Dim myEnterpriseService As EnterpriseService = _
    myEnterpriseSession.GetService("InfoStore")
    
    EnterpriseService enterpriseService =
    enterpriseSession.GetService("InfoStore");
    
  5. 取得した InfoStore サービスを使って InfoStore を宣言およびインスタンス化します。

    Dim myInfoStore As InfoStore = New InfoStore(myEnterpriseService)
    
    InfoStore infoStore = new InfoStore(enterpriseService);
    
  6. Crystal Reports Server または BusinessObjects Enterprise からレポートを抽出する以下のクエリー文字列を入力します。

    Dim queryString As String = "Select SI_ID, SI_NAME, SI_PARENTID
    From CI_INFOOBJECTS " _
    & "Where SI_PROGID='CrystalEnterprise.Report' "
    _
    & "And SI_NAME Like 'Chart'"
    
    string queryString = "Select SI_ID, SI_NAME, SI_PARENTID From
    CI_INFOOBJECTS "
    + "Where SI_PROGID='CrystalEnterprise.Report' "
    + "And SI_NAME Like 'Chart'";
    
  7. クエリー文字列を InfoStore の Query メソッドに渡すことによって、クエリーの結果を含む InfoObjects インデックス クラスを取得します。

    Dim myInfoObjects As InfoObjects = myInfoStore.Query(queryString)
    
    InfoObjects infoObjects = infoStore.Query(queryString);
    
  8. InfoObjects インデックス クラスの最初の列から InfoObject を取得します。

    Note

    InfoObjects インデックス クラスは 0 からではなく 1 から始まります。

    Dim myInfoObject As InfoObject = myInfoObjects(1)
    
    InfoObject infoObject = infoObjects[1];
    
  9. Report インスタンスを宣言し、InfoObject を Report にキャストします。

    Dim myReport As Report = CType(myInfoObject, Report)
    
    Report report = (Report)infoObject;
    
  10. CrystalReportViewer コントロールの EnterpriseLogon プロパティを EnterpriseSession インスタンスに設定します。

    myCrystalReportViewer.EnterpriseLogon = myEnterpriseSession
    
    crystalReportViewer.EnterpriseLogon = enterpriseSession;
    
  11. Report インスタンスを CrystalReportViewer コントロールにバインドします。

    myCrystalReportViewer.ReportSource = myReport
    
    crystalReportViewer.ReportSource = report;
    

関連項目