横井 羽衣子
SQL Developer Senior Support Engineer
みなさんごきげんよう。今日は、Windows Azure SQL Database の SQL レポートを、レポートマネージャ等の GUI を経由せず、レポートをエクスポートするプログラムを書いてみましょう。 Reporting Service が公開している Web サービスを利用すると簡単にエクスポートができちゃいます。なお題材は Azure ですが、実は、オンプレミスの Reporting Services も全く同じ手順で実現できてしまいます。
構成としては以下の通りとなります。
- クライアント端末は、IE など Web ブラウザを通じて、サーバーサイドの ASP.NET Web アプリケーションにアクセスします。
- ASP.NET Web アプリケーションは、Reporting Services の Web サービスにアクセスし、処理を行い、その結果をクライアントに返します。
Image may be NSFW.
Clik here to view.
エクスポートについては、ReportExecutionService クラスの Render メソッドにより実施することが可能です。
では、早速やってみましょう。まずは、レポートを作ってみるところからですね。
目次
はじめに : Windows Azure SQL Database Reporting Services でレポートを作ってみよう
1. ASP.NET Web アプリケーションを作ってみよう
2. 参照設定をしてみよう
3. 処理を実装してみよう
4. 実行してみよう
はじめに : Windows Azure SQL Database Reporting Services でレポートを作ってみよう
まずは、以下のドキュメントをもとに、レポートを作ってみましょう。
[SQL Azure] SQL Azure Reporting Previewを使ってみよう
http://blogs.msdn.com/b/dsazurejp/archive/2011/11/08/sql-azure-reporting-preview.aspx
上記ドキュメントは旧ポータル + SQL レポートのプレビュー版をもとにしていますが、SQL reportを作った後は、同じ手順でレポートを作成できます。新ポータルでは、以下に SQL Database Reporting Services があります。左のピラーの一番下の [新規+] を押すと、作成が可能です。
新ポータル : https://manage.windowsazure.com
Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
作成されると、”正常に作成されました” と表示されます。
Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.
ポータルの [SQL レポート] から、作成したサービスの “Web サービス URL” をクリックするとログイン画面になります。ログインするとサーバーの中がみられます。
Image may be NSFW.
Clik here to view.
まだ、レポートを作成していないと、空っぽです。上述のドキュメントに従って、レポートを作ってみてください。
Image may be NSFW.
Clik here to view.
完成すると、ブラウザでこんな風にみられます。これを、今回ファイル出力する!というのが目標です。以下は、作成したレポートをブラウザでみた図です。
Image may be NSFW.
Clik here to view.
ちなみに、Windows Phone 8 でもきれいに見えます。Image may be NSFW.
Clik here to view.(HTC Windows Phone 8x でテスト)
Image may be NSFW.
Clik here to view.
まだ、Windows Phone 8 は日本では出ていないので、エミュレータをご利用いただくことになると思います。Windows Phone エミュレータは以下をご参照ください。
Windows Phone エミュレーター
http://msdn.microsoft.com/ja-jp/library/windowsphone/develop/ff402563(v=vs.105).aspx
iphone シミュレータでもきれいにレポートを見ることができます。
Image may be NSFW.
Clik here to view.
※ iPhone シミュレータは Electric Mobile Studio からゲットしてみました。
Image may be NSFW.
Clik here to view.
それではアプリケーションを作ってみましょう!
1. ASP.NET Web アプリケーションを作ってみよう
1. Visual Studio を管理者権限で起動します。今回は、2012 でやってみます。
2. [ファイル(F)] – [新規作成(N)] – [プロジェクト(P)] を選択します。
3. [Web] を左ペインで選択し、"ASP.NET Web フォームアプリケーション" を選択し、任意の場所に作成します。
Image may be NSFW.
Clik here to view.
4. ツールボックスから、Button をクリックし、Form 上にドラッグ & ドロップします。
※ ツールボックスが見当たらない場合は、[表示(V)] – [ツールボックス] を選択してください。
Image may be NSFW.
Clik here to view.
5. WebForm 上のボタンをダブルクリックすると、Button1_Click イベントが追加され、コードのビューに移動します。今回は、ボタンが押されたタイミングで出力するようにしますので、Button1_Click イベント中にコードを追加していくことになります。
次のステップでは、Windows Azure SQL Database Reporting Services の Web サービスを参照して、プログラム中で使えるようにします。
2. 参照設定をしてみよう
Visual Studio のソリューション中で、サービス追加を行うことでレポート サーバーのサービスを利用することが出来ます。エクスポート処理は、レポート サーバーで公開している Web サービスのうち、"ReportExecutionService" を参照追加頂くことで利用可能です。
ReportExecutionService.Render メソッド
http://msdn.microsoft.com/ja-jp/library/reportexecution2005.reportexecutionservice.render.aspx
上記ページでは、mhtml 形式でのエクスポート (バイト配列への出力)、エクスポートされたデータのファイルへの書き込みといった一連の作業についてのサンプルコードが紹介されています。例えば、PDF ファイルへのエクスポートを行いたいときは、Render メソッドで指定される format に PDF を指定します。
上記例では、Windows Application (コンソール) でファイルへの書き出しを行っていますが、ASP.NET Web アプリケーションであれば、Response.BinaryWrite() メソッドを用いてファイルなどを保存することなどが可能です。
それでは、まずは参照を追加してみましょう。
1. Visual Studio のソリューション エクスプローラーの [参照設定] を右クリックし、[サービス参照の追加(S)...] を選択します。
Image may be NSFW.
Clik here to view.
2. [サービス参照の追加] ダイアログが開いたら、[詳細設定(V)...] をクリックし、[サービス参照設定] ダイアログを出します。
Image may be NSFW.
Clik here to view.Image may be NSFW.
Clik here to view.
2. さらに、[Web 参照の追加(W)...] をクリックすると、[Web 参照の追加] ダイアログが開きます。
Image may be NSFW.
Clik here to view.
2-a. "URL(U)" には、下記のように、ご利用の Reporting Services Web サービスの URL を入力し、[->] ボタンを押します。 何度も [セキュリティの警告] ダイアログが表示されますが、ひたすら [いいえ(N)] を押しまくります。(実際の URL は適宜環境に合わせてください。)
例) レポートサーバーの Web サ���ビス URL が https://xxxxxxxxxx.reporting.windows.net/reportserverの場合
https://xxxxxxxxxx.reporting.windows.net/reportserver/ReportExecution2005.asmx?wsdl
Image may be NSFW.
Clik here to view.
2-b. 正常に Web サービスが参照されれば、"この URL で見つかった Web サービス(S):" に "1 個のサービスが見つかりました - ReportService2005" が表示されます。
Image may be NSFW.
Clik here to view.
2-c. [参照の追加(R)] ボタンを押します。
5. Web References 配下に、net.windows.reporting.<SQL Reporting Services のサーバ名> で Web サービスの参照が追加されます。
Image may be NSFW.
Clik here to view.
例) サーバ名が xxxxxxxxxの場合
net.windows.reporting.xxxxxxxxx
6. ソース中に "名前区間名.net.windows.reporting.<SQL Reporting Services のサーバ名>"を宣言します。
Image may be NSFW.
Clik here to view.
例) 名前空間 WebApplication1 / Reporting Services のサーバ名が xxxxxxxxxの場合
using WebApplication1.net.windows.reporting.xxxxxxxxx
3. 処理を実装してみよう
以下、上記の MSDN のコードからデータ出力部分のみに構成しなおし、解説を加え、Web アプリケーション用に若干の変更を加えたものとなります。
using System; //第一引数 = User ID、第二引数 パスワード、第三引数サーバー名 // レポートのパスです。 // レポートを表示する形式です。この引数は、表示拡張機能にマップされます。 // ExecutionInfo オブジェクトは、レポートの実行に使用した設定または使用する設定を確認するために使用されます。 try |
4. 実行してみよう
ブラウザで、ASP.NET Web アプリケーションを実行してみます。まずは、Visual Studio でデバッグ実行でも OK です。F5 を押すとデバッグ実行が開始されます。
Web ブラウザで、ページが開かれます。
Image may be NSFW.
Clik here to view.
Button をクリックしますと、しばらくすると、ダウンロードのダイアログが出てきます。
Image may be NSFW.
Clik here to view.
ダウンロードフォルダに PDF が保存されます。
Image may be NSFW.
Clik here to view.
今回、コード中では、”Test.pdf” で保存をしているので、これで OK です。保存して開くと、レポートを見ることができます。
Image may be NSFW.
Clik here to view.
いかがでしたでしょうか。レポートを自動的に出力したいときなど、ちょっと便利じゃないですか?よかったら、やってみてくださいね!オンプレミスでも同じ手順でできますので。
それではみなさん、ごきげんよう。
Image may be NSFW.Clik here to view.