 |
重要: 本トピックで紹介しているWebサービスを使用してのActiveReports 11.0J Serverとの連携方法は、ActiveReports 9.0J Serverとの互換性のために残されています。新規でActiveReports 11.0J Serverとの連携するアプリケーション等を開発する場合は、REST APIを使用してください。
|
ActiveReports Serverに保存されたレポートは、Downloadメソッドを使用してダウンロードして、レポート定義ファイルの形式に保存することができます。このトピックでは、ActiveReports Serverに保存されているセクションレポート(XML)を、アプリケーションを実行するローカル環境にダウンロードする方法を紹介します。
 |
メモ:ページレポートやRDLレポートの場合も、同様の手順でダウンロードが可能です。 |
- Visual Studioの[ファイル]メニューから[新しいプロジェクト]を選択します。
- [新しいプロジェクト]ダイアログが表示されたら、テンプレートの一覧で[Visual C#]または[Visual Basic]、次に[Windows]の順にクリックし、[コンソールアプリケーション]を選択します。
- プロジェクトの名前をDownloadReportに変更し、[OK]をクリックします。
 |
メモ: プロジェクトのターゲットフレームワークは.NET Framework 4.5以上に設定されている必要があります。 |
- Visual Studioの[プロジェクト]メニューから[サービス参照の追加]を選択します。
- [サービス参照の追加]ダイアログが表示されたら、[アドレス]に以下のように入力します。
以下をコピーして[アドレス]ボックスに貼り付け、"localhost:8080"の部分を、ActiveReports 11.0J ServerをインストールしたサイトのURL、およびポートに置き換えます。 |
コードのコピー
|
http://localhost:8080/ReportService.svc |
- [移動]をクリックします。[サービス]ペインにReportServiceが表示されたら、それを展開してサービスインタフェースを選択します。そうすると、そのインタフェースの使用可能な操作が右側のペインに表示されます。
- 使用する名前空間の名前をReportServiceに変更し、[OK]をクリックします。追加した参照がソリューションエクスプローラに表示されます。
- app.configファイルを開き、endpoint要素内のaddress属性に、手順5で設定したサービスのアドレスが正しく設定されていることを確認してください。正しく設定されていない場合は、手順5で設定したアドレスに置き換えてください。
app.configファイル内のendpoint要素内のaddress属性の値を確認します。 |
コードのコピー
|
<client> <endpoint address="http://localhost:8080/ReportService.svc" binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IReportService" contract="ReportService.IReportService" name="WSHttpBinding_IReportService" /> </client>
|
 |
注意:ActiveReports Serverをインストールした先のサーバーの構成や設定によっては、サービスのアドレスが構成ファイルに正しく自動設定されない場合があります。 |
- app.configファイルの中で、以下のようにbinding要素内にmaxReceivedMessageSize属性を追加し、十分な値を設定します。WCFサービスで大きなデータを送受信する場合はこの値をカスタマイズする必要があります。以下の例では、10MBを設定しています。
app.configファイル内のbinding要素内に追加します。 |
コードのコピー
|
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IReportService" maxReceivedMessageSize="10000000">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
|
- Program.cs、またはModule1.vbで、以下のようにコードの先頭にusing/Importsステートメントを追加します。
Visual Basic
Visual Basicコード (コードの先頭にあるImports文のリストに追加します。) |
コードのコピー
|
Imports System.IO
Imports DownloadReport.ReportService
|
C#
C#コード (コードの先頭にあるusing文のリストに追加します。) |
コードのコピー
|
using System.IO;
using DownloadReport.ReportService;
|
- Program.cs、またはModule1.vbで、Mainメソッドに以下のコードを追加します。
Visual Basic
Visual Basicコード (Module1モジュール定義のMainメソッドに以下のコードを貼り付けます。) |
コードのコピー
|
Dim serverUserName As String = "USER"
Dim serverUserPwd As String = "PASS"
Dim reportService As New ReportServiceClient("WSHttpBinding_IReportService")
' Loginメソッドを使用してセキュリティトークンを取得
Dim securityToken As String = reportService.Login(serverUserName, serverUserPwd, Nothing, True)
' アップロードされている帳票の一覧情報を取得
Dim query As New ReportService.Query()
Dim description As ReportDescription() = reportService.[Select](securityToken, query)
' 出力対象の帳票のレポート情報を取得
Dim TargetRepDescription As New ReportDescription
For Each des As ReportDescription In description
If des.Name = "払込取扱票" Then
TargetRepDescription = des
Exit For
End If
Next
' エンコードされた帳票データを取得
Dim result As DataResult = reportService.Download(securityToken, TargetRepDescription.Id)
' バイト型配列に戻す
Dim s As String = result.Data
Dim bs As Byte() = System.Convert.FromBase64String(s)
' 保存先のフォルダを指定します。
Dim outFileName As String = "C:\work\PaymentSlip.rpx"
Dim outFile As New System.IO.FileStream(outFileName, System.IO.FileMode.Create, System.IO.FileAccess.Write)
outFile.Write(bs, 0, bs.Length)
outFile.Close()
|
C#
C#コード (Programクラス定義のMainメソッドに以下のコードを貼り付けます。) |
コードのコピー
|
var serverUserName = "USER";
var serverUserPwd = "PASS";
var reportService = new ReportServiceClient("WSHttpBinding_IReportService");
var securityToken = reportService.Login(serverUserName, serverUserPwd, null, true);
// 内部ストレージからレポートの一覧を取得します。
var description = reportService.Select(securityToken, new Query());
// 出力対象の帳票のレポート情報を取得
ReportDescription TargetRepDescription = new ReportDescription();
foreach (var des in description)
{
if (des.Name == "払込取扱票")
{
TargetRepDescription = des;
break;
}
}
// エンコードされた帳票データを取得
var result = reportService.Download(securityToken, TargetRepDescription.Id);
// バイト型配列に戻す
string s = result.Data;
byte[] bs = System.Convert.FromBase64String(s);
// 保存先のフォルダを指定します。
string outFileName = @"C:\work\PaymentSlip.rpx";
System.IO.FileStream outFile = new System.IO.FileStream(outFileName,
System.IO.FileMode.Create, System.IO.FileAccess.Write);
outFile.Write(bs, 0, bs.Length);
outFile.Close();
|
- プロジェクトを実行します。