ActiveReports通信

.NET帳票開発ツール ActiveReports の技術情報をお届けします。

Webアプリケーションサンプルを更新しました

レポートギャラリーの追加

公開中のWebアプリケーションサンプルに、最新版11.0Jの新機能を使ったレポートを追加しました。

ActiveReports for .NET Webアプリケーションサンプル | グレープシティ株式会社

  • クロス集計表
  • 予算決算表
  • 幹部任免審査表
  • 財政教育経費使用状況調査表
  • 飲食店リスト
  • AED設置場所
  • 顧客名簿
  • 売上高推移

サムネイルをクリックすると、プレビュー画面の上部にどの機能を使っているか説明が表示されますので、参考になりそうなレポートがありましたらチェックしてみてください(「HTML5ビューワ」-「レポートギャラリー」からご覧いただけます)。

 

今回は、このレポートギャラリーをもとに、SP1(11.1.10433.1)で追加された次の2つの機能について簡単に設定方法を紹介します。いずれも、HTML5ビューワでのみ利用できる機能です。

     ヘッダ行/ヘッダ列の固定

財政教育経費使用状況調査表」では、スクロールしても常にヘッダ行およびヘッダ列が表示されるようになっています。以前の記事でも紹介しましたように、ヘッダ行/ヘッダ列を固定することで、データ数の多いクロス集計表が見やすくなります。

f:id:ComponentOne_JP:20170907171351g:plain

このように、ヘッダ行/ヘッダ列を固定するには、Tablixコントロールの以下のプロパティを設定します。

  • FrozenColumnsプロパティ
  • FrozenRowsプロパティ

このレポートでは、ヘッダ行として5行、ヘッダ列として2列をそれぞれ設定しています。

f:id:ComponentOne_JP:20170908102605p:plain

なお、ヘッダ行/ヘッダ列の固定表示は、ゲラモードで表示した場合にのみ有効になります。このため、プレビュー時にデフォルトでゲラモード表示にするには、以下のように、HTML5ビューワのrenderModeオプションを"Galley"に設定します。

<script type="text/javascript">
  $(function () {
    var viewer = GrapeCity.ActiveReports.Viewer({
      element: '#viewer',
      report: {
        id: "~/../RDLReports/SurveyOfFinancialExpensesOnEducation.rdlx"
      },
      localeUri: 'i18n/ja.txt',
      reportService: {
        url: '../ActiveReports.ReportService.asmx'
      },
      uiType: 'desktop',
      renderMode: "Galley",
    });
  });
</script>

     グラフのツールヒント

売上高推移」では、グラフのデータ上でマウスをホバーさせると、データ情報をツールヒント(ツールチップ)として表示します。

f:id:ComponentOne_JP:20170908120717g:plain

このように、マウスの動きに合わせてツールヒントを表示するには、データ系列に対してツールヒントを設定します。

はじめに、Chartコントロールを選択した状態で、プロパティウィンドウの[データ]リンクをクリックし、[Chart データ]ダイアログを開きます。

f:id:ComponentOne_JP:20170908135421p:plain

次に、[系列]ページを開いて、[全般]タブの[ツールヒント]に表示したい情報を設定します。

f:id:ComponentOne_JP:20170908140742p:plain

このレポートでは、「売上本数」系列に対して、データの表示形式を含めて以下のように設定しています。

="売上本数:" & format(Sum([売上本数]),"#,##0") & "本"

同様に、他の「目標値」系列などにもツールヒントを設定すると、デモのように複数の情報を組み合わせて表示できます。

帳票システムのフロントUI選び

実は紙帳票はほとんど進化していない

帳票開発者の皆さまは、どういった情報システムに帳票機能を組み込んでいますでしょうか? 会計システム、生産管理システム、人事給与システムなど色々あるかと思います。データベースの無いシステムが存在しないのと同様に帳票が無いシステムもほぼ存在しません。特に日本では江戸時代の商人に端を発する帳簿から独自の帳票文化が発展し今日まで脈々と受け継がれています。

このため画面へのデータ表示とは別に紙専用にデータの表現形態を変えなくてはいけない場合が多々あります。よくあるのは画面ではシンプルなグリッドにデータを表示し、帳票の場合は罫線を多用した複雑なレイアウトに変化するというパターン。これは帳票開発者の悩みの種でもあります。こういった要件に応えるためにActiveReportsのような市販の帳票ツールが存在しているのです。

紙帳票の要件はここ数十年大きな変化はなかったと言えるでしょう。もちろん、新しいバーコードが世に出てそれがデファクトスタンダードになった。行政によりマイナンバーの表示が義務付けられた。など小規模な変更はありますが、請求書や給与明細、会計帳票の体裁は普遍的なものです。皆さんが普段目にしている帳票も昔と比較して大きな変化はないはずです。

一方でフロントUIはまったなし

このように紙帳票に関する要件変化は非常にゆったりしたものなのですが(電子帳票はそうではありません。長期保存性を求めらたり、改ざんが無い事実の証明が求められたり、帳票レイアウトとは別のところで要件は進化しています。)、帳票システムのフロントであるUI部分はまったなしで、次から次へと最先端のテクノロジーが生まれている状況です。どのテクノロジーを選択すべきか、どんなテクノロジーが存在するのか解らないといった帳票開発者も居るのではないでしょうか。帳票開発者は帳票だけやっていれば良いという訳ではないはずです。帳票は綺麗にレイアウトされたものが出力されていても、UI部分が古臭かったらどうでしょう。システム全体の価値は下がってしまいます。

ActiveReportsのマルチプラットフォーム対応

ActiveReportsはこうした変化に対応できるようにプラットフォーム毎に高機能な帳票ビューワを用意しています。これらを利用する事で手軽にそのプラットフォームで動作する帳票アプリケーションを構築できます。一方、帳票デザイナはWindowsフォーム用のみを提供しています。これは開発者が開発時に使うツールなのでプラットフォーム毎に揃っている必要性が低いためです。ただし、昨今のエンドユーザーレポーティング(帳票利用者が自らの手で帳票を編集する)需要の高まりから、別プラットフォーム用のデザイナ需要が発生する可能性はあり得ます。弊社ではこうした需要を汲み取ったうえで製品開発を進めていく予定です。

  • Windowsフォーム
  • ASP.NET Webフォーム
  • WPF
  • HTML5

XAML技術(WPF、UWP、Xamarin)のイベントやります

帳票だけでなくフロントのUIテクノロジー選択や開発にも携わらないと、といった技術者向けにWPF、UWP、Xamarinと、XAMLを利用する各アプリ開発技術のエキスパートをお迎えし、開発事例を中心としたセッション主体のイベントを行います。気になる方は是非参加して、何らかのヒントを持ち帰ってもらえると嬉しいです。

※この記事の投稿時点で、大変ありがたいことに、既に満席(100名)となっています。紹介しておきながら大変申し訳ありませんが、参加ご希望の方はキャンセル待ちへのご登録をお願いいたします。

ActiveReports for .NET 9.0J SP5 リリース

ActiveReports for .NET 9.0J のサービスパック(SP5)を公開しました。主な変更点は次の通りです。

  • 不具合の修正
  • サンプルの改訂
  • 製品ヘルプの改訂
  • 使用許諾契約書の改訂

詳細は製品のリリースノートをご覧ください。
ダウンロードはこちらから。

「Enterprise Development Conference 2017」に出展します


直前の紹介となってしまいスイマセン。

弊社GrapeCityは明日9月1日にホテル雅叙園東京にて開催される日経SYSTEMS/日経ソフトウエア主催のセミナーEneterprise Development Conference」にブース出展いたします。ブースではActiveReportsを中心に.NET開発支援製品を展示します。今秋リリースのActiveReports for .NET 11.0J SP2で提供予定の長体(詳細はこちらの事例記事を参照)など新機能もお見せできますので是非お越しください。

イベント概要

日時2017年9月1日(金) 13:00~18:00 (12:30 開場)予定
会場ホテル雅叙園東京 2F ※旧目黒雅叙園(東京都目黒区下目黒1-8-1)
主催日経SYSTEMS,日経ソフトウエア
協力ITpro
受講料無料(事前登録制)
Web公式ページはこちら

徹底解説 - Tabilxを使用したクロス集計表


ActiveReports for .NET 11.0Jから搭載されたTablixコントロール。使いこなすととっても便利なのですが、ちょっと癖があります。そこで今回は以下の画像のようなクロス集計表を作成する方法をステップバイステップで紹介してみたいと思います。

f:id:ComponentOne_JP:20170822164449p:plain

かなり長い投稿になってしまいましたが、是非マスターしてみてください。

Tablixコントロールの概要

まず最初にTablixの概要を押さえておきましょう。

  • Matrix(7.0Jから提供開始)の後継機能
  • 互換性維持のため11.0Jでも引き続き従来のMatrixは動作するが、新規に追加することは不可。新規作成はTablixを利用する
  • Matrixより柔軟なレイアウトを実現できる。例として以下
    • 集計セルの書式を個別に設定可能
    • 集計列/行をデータ行/列の前に設定できる
    • 行ヘッダ/列ヘッダのセル結合
    • 行ヘッダ/列ヘッダの固定(前回のブログ記事参照)

製品ヘルプ「Tablix」にも詳しい情報があります。 また、Matirxを使用した手順は開発者のための実装系Webマガジン「CodeZine」の「5分でわかるActiveReports帳票」でも取り上げています。こちらを読むとイメージが掴めるでしょう。

codezine.jp

データの準備

Nwindデータベースを使います。下記のようにProducts、Categories、OrderDetails, Orders, Employeeを結合し必要なデータを取得します。クロス集計表は、集計用の数値フィールド、行および列に配置する分析軸用のフィールドが存在すれば作成可能です。ちなみに、以下の画像はActiveReportsのクエリエディタです。

f:id:ComponentOne_JP:20170822164551p:plain

レポート新規作成

Tablixが利用できるのはページレポートとRDLレポートです。今回はRDLレポートを選択します。

f:id:ComponentOne_JP:20170823141518p:plain

レポートにデータを接続

データをレポートに接続します。接続に成功すると[レポートエクスプローラー]にデータベースフィールドが一覧表示されます。

f:id:ComponentOne_JP:20170822164645p:plain

レポートにTablixを追加

Tablixは初期状態で2つのグループと4つのTextBoxから構成されます。

f:id:ComponentOne_JP:20170822164702p:plain

行グループ/列グループの設定

左下のTextBoxにフィールド「カテゴリ」を連結します。この操作によってTablixの行グループのグループキーに「カテゴリ」がセットされます。

f:id:ComponentOne_JP:20170822164717p:plain

[メモ]
上述のとおり、TextBoxにフィールドを設定することでグループキーにも同じフィールドが自動的に設定されますが、 その後、TextBoxに別のフィールド設定したり、フィールドを削除してもグループキーは維持されます。例えば、グループキーに「ProductID」をセットし、TextBoxには「ProductName」をセットするといったことも実現可能です。

コンテキストメニューを表示し「カテゴリ」グループの下に子グループを追加します。

f:id:ComponentOne_JP:20170822164727p:plain

追加された子グループのTextBoxにフィールド「製品名」をセットします。この操作により2番目の行グループのグループキーに「製品名」がセットされます。

f:id:ComponentOne_JP:20170822164747p:plain

「カテゴリ」-「製品名」の親子2階層の行グループが完成しました。同様に列グループを設定していくと次のようになります。これでグループ化の設定は終了です。

f:id:ComponentOne_JP:20170822164812p:plain

集計値の設定

行列が交差するTextboxに集計対象の値「受注金額」をセットします。

f:id:ComponentOne_JP:20170822164839p:plain

「カテゴリ」毎の小計値を出力したい場合は、その1つ下のグループ「製品名」のTextBoxを右クリックし、コンテキストメニューから「合計の追加」を選択します。

f:id:ComponentOne_JP:20170822164855p:plain

「Total」という見出しを持った行が自動的に追加されます。これだけで小計行の追加は終了です。必要に応じて見出しのテキストを変更すると良いでしょう。

f:id:ComponentOne_JP:20170822164912p:plain

行グループ、列グループ全てに小計行を追加し、フォントや背景色などを整えていきましょう。最終的には次の画像のようなレポート定義となりました。これを実行すると冒頭で紹介した出力結果になります。

f:id:ComponentOne_JP:20170822164938p:plain

おまけ

余談ですがTablixとExcel出力は非常に親和性が高いです。以下の画像は今回作成したクロス集計表をExcel出力したものです。ズレのないExcel出力が希望の場合は是非Tablixの利用をご検討ください。

f:id:ComponentOne_JP:20170822170440p:plain

ActiveReports これ知ってる?-第10回:Excelライクなヘッダ固定のクロス集計表-

今回はActiveReports for .NET 11.0J SP1に搭載された新機能「Table/Tablixのヘッダ固定機能」を紹介します。

この機能、どういったシーンで有用かと申しますと、まずは行列ヘッダを持ったクロス集計表を想定してみてください。クロス集計表はデータ数に応じて帳票が縦横方向に伸長していきます。データ数が少なければ可視化は容易ですが、数が多いとデータが全て画面に収まらずマウス等でスクロール操作をしなければなりません。その結果、ヘッダが見切れてしまい、目当ての数字が何を意味しているのか解らなくなってしまう。といった問題が発生します。

Excelの場合、対処策として「ウィンドウ枠の固定」という機能が用意されており、任意の行や列を固定表示できます。ActiveReportsにも、まさにこれに相当する機能があるんです。

f:id:ComponentOne_JP:20170809120443p:plain

どんな帳票、どんなシチュエーションでもこの機能が有効かというと、残念ながらそうではありません。以下の条件を満たしている必要があります。

  1. RDLレポート
  2. TableもしくはTablix
  3. HTML5ビューワ(ゲラモード)

RDLレポートはバージョン9.0Jから提供を開始した帳票形式です。マルチデータソースが扱え、TableやTablixといったデータ表示専用のコントロールを用いることで手軽に大量データの一覧表示が可能です。また、帳票プレビュー時にページ化を無視するプレビュー方式「ゲラモード」が利用できるため、ページ遷移無しに大量データを閲覧できます。

ヘッダの固定方法は非常に簡単です。FrozenColumnsプロパティ、FrozenRowsプロパティに固定したい列数(行数)をセットするだけ。例えば、以下のような2列2行のヘッダを持ったTablixの場合、それぞれのプロパティに2をセットすると、先頭から2列2行分のヘッダが固定表示されスクロール対象となりません。

f:id:ComponentOne_JP:20170809120601p:plain

実際にHTML5ビューワのゲラモードで表示すると次のような表示結果になります。表示されるページは1ページのみ。これは縦横に非常に大きなページサイズを持つ帳票が表示されていることを意味します(もちろん、通常モードのプレビューを選択した際は10ページ程に分割表示されます)。

f:id:ComponentOne_JP:20170810113511p:plain

この状態でビューワのスクロールバーを動かすと、以下のようにヘッダが固定された状態でデータを閲覧できます。

f:id:ComponentOne_JP:20170809120836g:plain

いかがでしたでしょうか。帳票というと紙やPDFでの出力をターゲットとした静的な固定帳票を思い浮かべがちですが、ActiveReportsはそういった従来の帳票をサポートするほか、画面上でユーザーとの対話を通じてデータを可視化するといった動的帳票を支援するための機能も幅広く提供しています。こうした機能は従来のセクションレポートではなくページレポートやRDLレポートに多く提供されます。

機会があれば製品ヘルプの「データ可視化」や「対話的な機能」を参考に動的帳票の作成にチャレンジしてみると良いでしょう。

ActiveReports これ知ってる?-第9回:新機能紹介「Lookup関数」-

今回のテーマは11.0Jの新機能「Lookup関数」です。

Lookup関数は、異なるデータセットから値を取得するための関数です。ページレポート/RDLレポートのValueプロパテイの式として使用できます。この関数の強みは「ページレポートでも使える」ことにあります。ご存知の方も多いかと思いますが、ページレポートではデータセットを複数登録することはできても、レポート上に表示できるフィールドは単一のデータセットに限定されています。

レイアウト的にはページレポートを使用したいけど、データセットを複数参照する必要があるからRDLレポートを使用しているというお客様も中にはいらっしゃるのではないでしょうか。新機能の「Lookup関数」を使用すると、データセットから直接的に値を取得できるため、ページレポートでも複数のデータセットの値をレポート上に表示することが可能になります。

f:id:ComponentOne_JP:20170731172008p:plain

具体的な使用方法は、「Lookup関数」に4つの引数を渡します。たとえば、TableにユーザーID(UserID)が表示されていて、別のデータセット(DataSet2)にユーザー情報(ID、Name)が存在する場合、以下のような記述でユーザー名を取得できます。

◆Lookup関数の利用例

=Lookup(Fields!UserID.Value, Fields!ID.Value, Fields!Name.Value, "DataSet2"))

関数の詳細については、製品ヘルプ「データ領域での複数データセットの使用」トピックをご確認ください。

また、別のデータセットから値を取得したいという要件では、集計値を取得したいというケースも多いと思われます。しかしながら、取得先のデータセットに該当するレコードが複数ある場合、Lookup関数は1つの値しか取得しません。また、以下のように他の関数と併用することもできません。

◆動作しない例(Lookup関数の中でSum関数を利用)

=Lookup(Fields!ProductID.Value, Fields!ProductID.Value, Sum(Fields!Quantity.Value), "DataSet2"))

 上記の要件を実現するためには、データセット自体を合計値取得用として登録する必要があります。あらかじめSQLクエリで集計した値をデータセットとして登録しておけば、その値をLookup関数で取得できます。

「Lookup関数」を活用すれば、今までページレポートでは実現が困難であったレイアウトも実現できる可能性があります。ぜひお試しください。