ActiveReports for . NET 11.0J では、Internet Explorer/Microsoft Edgeに加えて、ChromeおよびSafari for iOS(iPad/iPhone)での閲覧をサポートするHTML5ビューワを使用することができます。
昨今、このHTML5ビューワの使用方法についての質問が増えてきています。その中でも頻繁に頂く質問に「レポートのデータソースを変更できないか?」というものがあります。この方法について、先日ナレッジ文書を公開いたしました。
ナレッジベースの「HTML5ビューワ使用時にレポートデータソースを動的に変更する方法は?【※サンプル有り】」を見る
今回はこの文書の「2.Webサービスをカスタマイズする方法」で紹介しているサンプルの実装内容について解説いたします。
本サンプルは、文書内にもあるように、Webサービスをカスタマイズすることによってレポートに設定するデータソースを動的に変更できるようにしています。処理の概要は以下のようになっています。
- JavascriptでHTML5ビューワに設定するオプション”reportID”に画面項目によってパラメータを付加する
- カスタマイズしたWebサービス「MyReportService」のイベント「OnCreateReportHandler」の引数で”reportID”を受け取る
- “reportID”内のレポートパスでレポート形式を判別する
- “reportID”内のパラメータで使用するデータソースを決定する
- データソースを設定したレポートを生成し、HTML5ビューワに返す
ポイントとしては、本サンプルでは”reportID”に設定する文字列の形式を”レポートパス?データソース名”としています。
ここで”レポートパス”は、コード形式のセクションレポートの場合はクラスの完全名を、それ以外のレポート形式の場合はレポートファイルのファイルパスを指しています。
本サンプルで行ったカスタマイズでは、汎用性を持たせるために”レポートパス”の文字列からレポート形式を判断し、レポートの生成方法やデータの設定方法を分岐させていますが、最終的にレポートの生成結果を返せれば、カスタマイズの方法は自由です。
たとえば、以下のような方法も考えられます。
- イベント内での分岐条件に使用する値をそのまま”reportID”に設定する。(スクリプト内にはレポート名を記述しない)
- “reportID”にパラメータを複数付加し、イベント内でSQLクエリの生成に使用する。(例:レポートパス?…&…&…)
業務アプリケーションの場合、画面項目で条件を複数選択した上でレポートを表示したいことが多いと思われますので、要求仕様に合わせた独自のカスタマイズをお試しいただけると幸いです。
HTML5ビューワ自体を使用したことがない方は、以下の技術情報をご覧ください。
この記事はグレープシティが発行するメールマガジン「ActiveReports通信」の第15号(2016年11月発行)に掲載された記事を、加筆修正して転載したものです。