SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)(AD)

ActiveReports on Azureで帳票を適材適所で利用する

  • X ポスト
  • このエントリーをはてなブックマークに追加

Tablixを使った定義例

 基本がわかったところで、連載「ActiveReportsの新機能を活用して一歩進んだ帳票を作成しよう」の第2回で作成したTablixをWebアプリ化してみましょう。

データの設定

 CSVファイルはdataフォルダを作ってその中に配置します。デプロイ時にも一緒にデプロイするために[ビルドアクション]プロパティは「コンテンツ」になっていることを確認します。

図10 データの設定
図10 データの設定

帳票定義

 reportsフォルダに2つめのRDLレポート形式の帳票定義を新規作成します。

図11 帳票定義ファイルの追加
図11 帳票定義ファイルの追加

 こちらの記事を参考にしていただき、Tablixを使った帳票定義を行います。

図12 RdlReport2.rdlx
図12 RdlReport2.rdlx

 データソースで図10のCSVファイルを指定しておけば、デザイナーのプレビュー画面でWindowsアプリと同様に値が入った状態での実行結果が確認できます。

図13 プレビュー表示
図13 プレビュー表示

Webページの追加

 TablixPage.aspxをプロジェクトに追加して、PdfPage.aspxと同様にC#のコードを記述します。ただし、rptPath変数に設定するファイル名は「RdlReport2.rdlx」になります。

Tablixを使った実行例

テスト実行

 ここまでの作業が終わったらVisual Studioで実行して、TablixPage.aspxを指定してみましょう。

図14 開発環境での実行
図14 開発環境での実行

 Visual Studioのデザイナーで見たのと同じ内容がブラウザ上に表示できました。

Azureでの実行

 しかし、Azureにデプロイして確認してみるとエラーとなってしまいます。

図15 Azure環境での実行
図15 Azure環境での実行

Azureで動作させるためには

 なぜ、開発環境では正常に動作し、Azure環境では動作しなかったのでしょうか。

 この2つの環境で相違があるとするとファイルの設置場所です。rptPath変数に設置しるときにServer.MapPathメソッドを使ってサーバー上での位置でRDLレポートファイルの位置は指定していますので、ここは正しそうです。他に何があるでしょうか。

 CSVファイルはどうでしょう。これはRDLレポートファイルのデータソースとしてレポートエクスプローラーから指定していました。内容を確認すると開発環境でのファイル位置を指定していました。これを実行時はServer.MapPathメソッドでの指定に直してあげる必要がありそうです。

データファイル指定のデバッグ

 TablixPage.aspx.csを開いて、reportDocument変数を作成する直前でCSVファイルを指定します。具体的には以下のリストのようになります。

リスト3 TablixPage.aspx.cs(抜粋)
// エクスポートするページレポートのインスタンスを生成します。
var rptPath = new FileInfo(Server.MapPath("reports") + "\\RdlReport2.rdlx");
var report = new GrapeCity.ActiveReports.PageReport(rptPath);

// データソースの指定
var dataPath = new FileInfo(Server.MapPath("data") + "\\TablixData.csv");
report.Report.DataSources[0].ConnectionProperties.ConnectString = "Path=" + dataPath + ";Encoding=shift_jis;Locale=ja-JP;TextQualifier=\";ColumnsSeparator=,;RowsSeparator=\\r\\n;HasHeaders=True";

var reportDocument = new GrapeCity.ActiveReports.Document.PageDocument(report);

Azureでの実行例

 開発環境での正常動作を確認したら、Azureにデプロイして再度動作を確認します。

 今度は正常に動作し、開発環境と同じようにPDFを表示可能です。

図16 Azure環境での実行
図16 Azure環境での実行

さいごに

 従来はWindowsアプリとWebアプリでは、帳票定義が流用できない場合が多かったと思います。ActiveReportsを使えばWebアプリでもWindowsアプリと同様に簡単にPDFファイル形式での帳票を出力できます。

 また、今回紹介したRDLレポートはレポート定義体がXMLファイルのため取り扱いがシンプルです。例えば仕様変更などでレポートレイアウトの変更が必要となった場合でも、変更後のXMLファイルを上書きすることでAzure上のアプリケーションに反映できます。アプリケーション全体を再ビルドする必要はありません。​

 今回はCSVファイルを使いましたが、もちろんデータベースから値を取得するときもデータ取得指定のところを変更するだけで対応可能です。サンプルでは50ページくらいのPDFが出力されますが、そのデータ量でもほとんど待たずに表示できます。この速度も11.0J SP2の良さの1つです。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10564 2018/01/10 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング