Crystal Reports Web サービスにアクセスするヘルパー メソッドの追加
この手順では、Crystal Reports Web サービスを使用するように設定されたコンピュータにアクセスする必要があります。作業を続行する前に、使用しているコンピュータが正しく設定されていることを確認してください。詳細については、「Crystal サービスでのサーバー ファイルの設定」を参照してください。
ここでは、Crystal Reports Web サービスを通してサーバーにアクセスするヘルパー メソッドを作成し、レポートのリストを生成します。
Web フォームまたは Windows フォームを開きます。
[表示]メニューの[コード]をクリックします。
3 つのプライベートのクラス レベル変数を追加します。
Private myServerFileReport As ServerFileReport Private myReportManagerRequest As ReportManagerRequest Private myServerFileReportManagerProxy As ServerFileReportManagerProxy
private ServerFileReport serverFileReport; private ReportManagerRequest reportManagerRequest; private ServerFileReportManagerProxy serverFileReportManagerProxy;
ArrayList を返す新しいプライベート ヘルパー メソッドを作成します。
Protected Function getReports() As ArrayList End Function
protected ArrayList getReports() { }
ヘルパー メソッドの内部で、新しい ServerFileReport インスタンスをインスタンス化します。
``` vb
myServerFileReport = New ServerFileReport()
```
``` csharp
serverFileReport = new ServerFileReport();
```
ServerFileReport インスタンスの ReportPath プロパティを Null 文字列に設定します。
myServerFileReport.ReportPath = ""
serverFileReport.ReportPath = "";
ServerFileReport の WebServiceURL プロパティを、インストールされている Crystal Reports のバージョンの“ビューアの仮想ディレクトリ”に設定します。「ビューアの仮想ディレクトリ」を参照してください。
注 このチュートリアルでは、レポート サーバーはローカル コンピュータで、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";
新しい ReportManagerRequest インスタンスをインスタンス化します。
``` vb
myReportManagerRequest = New ReportManagerRequest()
```
``` csharp
reportManagerRequest = new ReportManagerRequest();
```
serverFileReport インスタンスの GetExtraData メソッドの結果を ReportManagerRequest インスタンスの ExtraData プロパティに割り当てます。これによって、ExtraData プロパティを Web サービス URL に設定します。
myReportManagerRequest.ExtraData = myServerFileReport.GetExtraData()
reportManagerRequest.ExtraData = serverFileReport.GetExtraData();
serverFileReport インスタンスの ToUri メソッドの結果を ReportManagerRequest インスタンスの ParentUri プロパティに割り当てます。これによって、リストに含まれるレポートが格納されたサーバー コンピュータのディレクトリを識別します。
myReportManagerRequest.ParentUri = myServerFileReport.ToUri()
reportManagerRequest.ParentUri = serverFileReport.ToUri();
新しい ServerFileReportManagerProxy インスタンスをインスタンス化します。
``` vb
myServerFileReportManagerProxy = New ServerFileReportManagerProxy()
```
``` csharp
serverFileReportManagerProxy = new ServerFileReportManagerProxy();
```
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";
新しい ReportManagerResponse オブジェクトを作成してインスタンス化します。
``` vb
Dim myReportManagerResponse As ReportManagerResponse = new ReportManagerResponse()
```
``` csharp
ReportManagerResponse reportManagerResponse = new ReportManagerResponse();
```
serverFileReportManagerProxy インスタンスの ListChildObjects() メソッドを呼び出し、その結果を ReportManagerResponse インスタンスに割り当てます。ListChildObjects メソッドは、レポート サーバーに格納されているファイルのリストを返します。
myReportManagerResponse = myServerFileReportManagerProxy.ListChildObjects(myReportManagerRequest)
reportManagerResponse = serverFileReportManagerProxy.ListChildObjects(reportManagerRequest);
新しい ArrayList を作成してインスタンス化します。
``` vb
Dim myRemoteReports As ArrayList = New ArrayList()
```
``` csharp
ArrayList remoteReports = new ArrayList();
```
次に、reportManagerResponse の各要素によってループする For Each ループを作成します。
For Each myReportUriString As String In myReportManagerResponse.ReportUris Next
foreach (string reportUriString in reportManagerResponse.ReportUris) { }
For Each ループの内部に、serverFileReport の新しいインスタンスを作成します。
myServerFileReport = New ServerFileReport()
serverFileReport = new ServerFileReport();
serverFileReport Uri を reportUriString の値に設定します。
myServerFileReport = ServerFileReport.FromUri(myReportUriString)
serverFileReport = ServerFileReport.FromUri(reportUriString);
これも 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)
{
}
```
If 条件ブロックの内部で、reportUriString インスタンスを remoteReport ArrayList に追加します。
myRemoteReports.Add(myReportUriString)
remoteReports.Add(reportUriString);
最後に、For Each ループの外部で、remoteReports ArrayList を返します。
``` vb
Return myRemoteReports
```
``` csharp
return remoteReports;
```
- [ファイル]メニューの[すべて保存]をクリックします。
次の手順では、レポートのリストを DropDownList コントロールまたは ComboBox コントロールに自動的に設定するコードを記述します。
Web サイトの場合は「Web サイトの DropDownList コントロールの値の設定」に続きます。
Windows プロジェクトの場合は、「Windows プロジェクトの ComboBox コントロールの値の設定」に続きます。