none
Repoting Service のPDFの自動保存 RRS feed

  • 質問

  • 現在、Windows Xp Professional で動作している

    SQL Server2005 Reporitng Serviceについて質問します。

     

    VBで作成したexeファイルから、ReportServer上のレポートを起動して、

    PDFファイルをエクスポートして、ローカルフォルダに保存するまでを

    全て自動で行うプログラムを作成してます。

    しかし、いろいろ調査しましたが、その方法が見つかりませんでした。

    どのような方法で、処理できるのでしょうか?

    よろしくお願いします。

    2009年1月15日 2:19

回答

  • こちらこそスミマセン。

    説明を端折ってしまった上、内容に誤りもありました。

     

    サンプルコードではReportViewerを使っていますがそれを使わずに、ServerReportクラスを自分でNewして、そのオブジェクトのReportServerUrlプロパティやReportPathプロパティに適切な値を設定してRenderメソッドを実行してみてはいかがでしょうか。

     

    もしMicrosoft.ReportViewer.WinFormsの参照設定がイヤということであれば、SSRSのWebサービスReportExecution2005.asmxをWeb参照する方法があります。
    (前の投稿ではReportService.asmxと書いてしまいましたが、それはMSSQL2000の場合です。ごめんなさい。)
    WebサービスプロキシであるReportExecutionServiceクラスにRenderメソッドがあるのでそれを使用してください。
    SOAP API へのアクセス
    http://msdn.microsoft.com/ja-jp/library/ms154052(SQL.90).aspx
    こちらを参考にしてください。

     

    URLアクセスを使用する手もあります。
    この場合、URLアクセスの構文に則った文字列を組み立ててHttpRequestする形になるでしょう。
    URL アクセス
    http://msdn.microsoft.com/ja-jp/library/ms153586(SQL.90).aspx

     

    exe(カスタムアプリケーション)の作成に拘らなければ、RSコマンドユーティリティを使ってちょちょいとスクリプトを書くこともできます。
    rs ユーティリティと Web サービスを使用したスクリプト
    http://msdn.microsoft.com/ja-jp/library/ms152874(SQL.90).aspx

     

    また、エディションによって制限があったような記憶がありますが、サブスクリプションやデータドリブンサブスクリプションの使用を検討してみるのも良いかもしれません。
    うちでは、データドリブンサブスクリプションを使用して夜間にPDFを作成しています。

     

    こんなもんかな・・・。
    しっくりとくる方法を選択してください。


     

    Reporting Services のプログラミング
    http://msdn.microsoft.com/ja-jp/library/ms155076(SQL.90).aspx

    2009年1月16日 5:11

すべての返信

  • Windowsアプリケーションからサーバーレポートをエクスポート、ということですね。

    .NET2.0以降でしたら、ServerReportクラスのRenderメソッドが使用できるのではないでしょうか。

     

    ServerReport.Render メソッド

    http://msdn.microsoft.com/ja-jp/library/microsoft.reporting.winforms.serverreport.render(VS.80).aspx

     

    3つ目のオーバーロードにサンプルコードが載っています。

     

    .NET1.xでしたら、ReportService.asmxをWeb参照すればプロキシクラスの中にRenderメソッドがあります。

    2009年1月15日 10:23
  • かめたろ様

     

    アドバイスありがとうございます。

    確かに、教えていただいたサンプルコードでは、

    フォーム上でレポート指定することでPDFファイルをエクスポートすることができます。

    しかし、Windowsアプリケーションではなく、フォームのないコンソールアプリケーションで実現したいと考えております。

    (夜間バッチで処理を行いたいため)

     

    説明不足で申し訳ありません。

    再度、よろしくお願いいたします。

    2009年1月15日 11:16
  • こちらこそスミマセン。

    説明を端折ってしまった上、内容に誤りもありました。

     

    サンプルコードではReportViewerを使っていますがそれを使わずに、ServerReportクラスを自分でNewして、そのオブジェクトのReportServerUrlプロパティやReportPathプロパティに適切な値を設定してRenderメソッドを実行してみてはいかがでしょうか。

     

    もしMicrosoft.ReportViewer.WinFormsの参照設定がイヤということであれば、SSRSのWebサービスReportExecution2005.asmxをWeb参照する方法があります。
    (前の投稿ではReportService.asmxと書いてしまいましたが、それはMSSQL2000の場合です。ごめんなさい。)
    WebサービスプロキシであるReportExecutionServiceクラスにRenderメソッドがあるのでそれを使用してください。
    SOAP API へのアクセス
    http://msdn.microsoft.com/ja-jp/library/ms154052(SQL.90).aspx
    こちらを参考にしてください。

     

    URLアクセスを使用する手もあります。
    この場合、URLアクセスの構文に則った文字列を組み立ててHttpRequestする形になるでしょう。
    URL アクセス
    http://msdn.microsoft.com/ja-jp/library/ms153586(SQL.90).aspx

     

    exe(カスタムアプリケーション)の作成に拘らなければ、RSコマンドユーティリティを使ってちょちょいとスクリプトを書くこともできます。
    rs ユーティリティと Web サービスを使用したスクリプト
    http://msdn.microsoft.com/ja-jp/library/ms152874(SQL.90).aspx

     

    また、エディションによって制限があったような記憶がありますが、サブスクリプションやデータドリブンサブスクリプションの使用を検討してみるのも良いかもしれません。
    うちでは、データドリブンサブスクリプションを使用して夜間にPDFを作成しています。

     

    こんなもんかな・・・。
    しっくりとくる方法を選択してください。


     

    Reporting Services のプログラミング
    http://msdn.microsoft.com/ja-jp/library/ms155076(SQL.90).aspx

    2009年1月16日 5:11
  • かめたろ様

     

    教えていただいたReportExecutionServiceクラスのRenderメソッドを使用することで、

    無事、目的が達成できました。

    http://msdn.microsoft.com/ja-jp/library/ms154052(SQL.90).aspx

     

    詳しく教えていただき、ありがとうございました。

    大変勉強になりました。

    2009年1月16日 10:45