次の方法で共有


Crystal Reports Web サービスにアクセスするヘルパー メソッドの追加

この手順では、Crystal Reports Web サービスを使用するように設定されたコンピュータにアクセスする必要があります。作業を続行する前に、使用しているコンピュータが正しく設定されていることを確認してください。詳細については、「Crystal サービスでのサーバー ファイルの設定」を参照してください。

ここでは、Crystal Reports Web サービスを通してサーバーにアクセスするヘルパー メソッドを作成し、レポートのリストを生成します。

  1. Web フォームまたは Windows フォームを開きます。

  2. [表示]メニューの[コード]をクリックします。

  3. 3 つのプライベートのクラス レベル変数を追加します。

    Private myServerFileReport As ServerFileReport
    Private myReportManagerRequest As ReportManagerRequest
    Private myServerFileReportManagerProxy As
    ServerFileReportManagerProxy
    
    private ServerFileReport serverFileReport;
    private ReportManagerRequest reportManagerRequest;
    private ServerFileReportManagerProxy serverFileReportManagerProxy;
    
  4. ArrayList を返す新しいプライベート ヘルパー メソッドを作成します。

    Protected Function getReports() As ArrayList
    End Function
    
    protected ArrayList getReports()
    {
    }
    
  5. ヘルパー メソッドの内部で、新しい ServerFileReport インスタンスをインスタンス化します。

``` vb
myServerFileReport = New ServerFileReport()
```

``` csharp
serverFileReport = new ServerFileReport();
```
  1. ServerFileReport インスタンスの ReportPath プロパティを Null 文字列に設定します。

    myServerFileReport.ReportPath = ""
    
    serverFileReport.ReportPath = "";
    
  2. ServerFileReport の WebServiceURL プロパティを、インストールされている Crystal Reports のバージョンの“ビューアの仮想ディレクトリ”に設定します。「ビューアの仮想ディレクトリ」を参照してください。

    Note

    このチュートリアルでは、レポート サーバーはローカル コンピュータで、Web サービス URL として https://localhost:80/ を使用するものと想定します。レポート サーバーとして別のコンピュータを使用する場合は、そのレポート サーバーのアドレスとポート番号で https://localhost:80/ を置き換えてください。

    このサンプル コードでは、ビューアの仮想ディレクトリを Crystal Reports for Visual Studio 2008 用に設定します。

    myServerFileReport.WebServiceUrl =
    "https://localhost:80/CrystalReportsWebServices/serverfilereportservice.asmx"
    
    serverFileReport.WebServiceUrl =
    "https://localhost:80/CrystalReportsWebServices/serverfilereportservice.asmx";
    
  3. 新しい ReportManagerRequest インスタンスをインスタンス化します。

``` vb
myReportManagerRequest = New ReportManagerRequest()
```

``` csharp
reportManagerRequest = new ReportManagerRequest();
```
  1. serverFileReport インスタンスの GetExtraData メソッドの結果を ReportManagerRequest インスタンスの ExtraData プロパティに割り当てます。これによって、ExtraData プロパティを Web サービス URL に設定します。

    myReportManagerRequest.ExtraData = myServerFileReport.GetExtraData()
    
    reportManagerRequest.ExtraData = serverFileReport.GetExtraData();
    
  2. serverFileReport インスタンスの ToUri メソッドの結果を ReportManagerRequest インスタンスの ParentUri プロパティに割り当てます。これによって、リストに含まれるレポートが格納されたサーバー コンピュータのディレクトリを識別します。

    myReportManagerRequest.ParentUri = myServerFileReport.ToUri()
    
    reportManagerRequest.ParentUri = serverFileReport.ToUri();
    
  3. 新しい ServerFileReportManagerProxy インスタンスをインスタンス化します。

``` vb
myServerFileReportManagerProxy = New ServerFileReportManagerProxy()
```

``` csharp
serverFileReportManagerProxy = new ServerFileReportManagerProxy();
```
  1. ServerFileReportManagerProxy の Url プロパティを、インストールされている Crystal Reports のバージョンの“サーバー ファイル レポート マネージャ”に設定します。「ビューアの仮想ディレクトリ」を参照してください。

    このサンプル コードでは、ビューアの仮想ディレクトリを Crystal Reports for Visual Studio 2008 用に設定します。

    myServerFileReportManagerProxy.Url = "https://localhost:80/CrystalReportsWebServices/serverfilereportmanager.asmx"
    
    serverFileReportManagerProxy.Url = "https://localhost:80/CrystalReportsWebServices/serverfilereportmanager.asmx";
    
  2. 新しい ReportManagerResponse オブジェクトを作成してインスタンス化します。

``` vb
Dim myReportManagerResponse As ReportManagerResponse = new ReportManagerResponse()
```

``` csharp
ReportManagerResponse reportManagerResponse = new ReportManagerResponse();
```
  1. serverFileReportManagerProxy インスタンスの ListChildObjects() メソッドを呼び出し、その結果を ReportManagerResponse インスタンスに割り当てます。ListChildObjects メソッドは、レポート サーバーに格納されているファイルのリストを返します。

    myReportManagerResponse = myServerFileReportManagerProxy.ListChildObjects(myReportManagerRequest)
    
    reportManagerResponse = serverFileReportManagerProxy.ListChildObjects(reportManagerRequest);
    
  2. 新しい ArrayList を作成してインスタンス化します。

``` vb
Dim myRemoteReports As ArrayList = New ArrayList()
```

``` csharp
ArrayList remoteReports = new ArrayList();
```
  1. 次に、reportManagerResponse の各要素によってループする For Each ループを作成します。

    For Each myReportUriString As String In myReportManagerResponse.ReportUris
    
    Next
    
    foreach (string reportUriString in reportManagerResponse.ReportUris)
    {
    }
    
  2. For Each ループの内部に、serverFileReport の新しいインスタンスを作成します。

    myServerFileReport = New ServerFileReport()
    
    serverFileReport = new ServerFileReport();
    
  3. serverFileReport Uri を reportUriString の値に設定します。

    myServerFileReport = ServerFileReport.FromUri(myReportUriString)
    
    serverFileReport = ServerFileReport.FromUri(reportUriString);
    
  4. これも For Each ループの内部に、ServerFileReport の ObjectType プロパティ型が REPORT かどうかを確認する If 条件ブロックを作成します。

<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>ListChildObjects メソッドは、ディレクトリとレポートの両方を返します。このチュートリアルでは、レポート ファイルのためにオブジェクトのリストをフィルタします。</p></td>
</tr>
</tbody>
</table>

``` vb
If (myServerFileReport.ObjectType = EnumServerFileType.REPORT) Then
End If
```

``` csharp
if (serverFileReport.ObjectType == EnumServerFileType.REPORT)
{
}
```
  1. If 条件ブロックの内部で、reportUriString インスタンスを remoteReport ArrayList に追加します。

    myRemoteReports.Add(myReportUriString)
    
    remoteReports.Add(reportUriString);
    
  2. 最後に、For Each ループの外部で、remoteReports ArrayList を返します。

``` vb
Return myRemoteReports
```

``` csharp
return remoteReports;
```
  1. [ファイル]メニューの[すべて保存]をクリックします。

次の手順では、レポートのリストを DropDownList コントロールまたは ComboBox コントロールに自動的に設定するコードを記述します。

Web サイトの場合は「Web サイトの DropDownList コントロールの値の設定」に続きます。

Windows プロジェクトの場合は、「Windows プロジェクトの ComboBox コントロールの値の設定」に続きます。