はじめに
データベースのフロントエンド作成ツールは、いろいろとありますが、ActiveReports for .NET 9.0JのActiveReportsコントロールは、データベースのデータをもとに帳票作成機能をアプリケーションに組み込むことができるコンポーネントです。
データをレコードの数だけ繰り返し表示するセクションレポート、ページ単位でレポートをデザインするページレポート、セクションの出力位置やページの用紙サイズといったレイアウト上の制約を意識することなく、自由にレポートコントロールをレイアウトできるRDLレポートの3種類のレポートを作成することができます。データの種類や使用目的によって、作成する帳票の形式が異なってきますが、ActiveReportsコントロールを使用すれば、さまざまな形式の帳票作成に対応することができます。
また、アプリケーションの形態もWindowsフォームだけでなくWPFやWebアプリケーションとして作成することができます。ActiveReports for .NET 9.0Jは、今回のバージョンアップでサーバー機能が追加され、作成したレポートをWebで共有し管理運用できるようになったり、ページレポートでレイヤー機能が使えるようになるなど、より一層使いやすさが増しています。
そこで今回は、このActiveReportsコントロールを使用して、データベースのデータをもとに簡単な給与明細を作成するWindowsフォームアプリケーションを作成してみました。
対象読者
Visual Basic 2010/2012/2013、またはVisual C# 2010/2012/2013を使ってプログラムを作ったことがある人。
必要な環境
Visual Basic 2010/2012/2013、Visual C# 2010/2012/2013、Visual Studio 2010/2012/2013でプログラムが作れる環境。
なお、本プログラムは次の環境で開発・動作確認を行っています。
- OS:Windows 7
- 開発Tool:Visual Studio 2010、.NET Framework 4
プログラム実行時の注意事項
本稿のプロジェクトファイルを動かすには、記事に添付されているサンプルファイルに同梱してある以下のSQLサーバーデータベースファイルをSQLサーバーに組み込んでください。
- 給与明細_Data.mdf
- 給与明細_Log.ldf
コンポーネントのインストール
トライアル版は、グレープシティのWebページから申し込みできます。
トライアル申込フォームが表示されますので、必要情報を入力して申し込むとトライアル版のダウンロード手順を記載したE-Mailが送られてきます。その手順にそってダウンロードを行ってください。また、ダウンロードファイルは圧縮ファイルになっていますので、解凍してインストーラを起動します。
制限事項などの詳細については、インストーラに同梱されているリリースノートを参照ください。
コントロールと参照の追加
ActiveReports for .NET 9.0Jをインストールしたら、プロジェクトにコントロールを追加します。
ツールボックスに専用のタブを作成し、以下のコンポーネントを追加します。
- Viewer
- WebViewer
- Designer
- ReportExplorer
- Toolbox
- LayerList
- HtmlExport
- PdfExport
- RtfExport
- TextExport
- TiffExport
- XlsExport
[ツールボックスアイテムの選択]ダイアログの[.NET Frameworkコンポーネント]タブへ移動し、フィルターのテキストボックスで、「Grapecity.ActiveReports」と入力すると選択しやすくなります。
これらのコントロールを追加すると、プロジェクトに画面のようなランタイムライブラリへの参照が追加されます。
ActiveReportsコントロールの概要と新機能
ActiveReportsは、帳票を作成できるコンポーネントです。ActiveReportsを使用した帳票アプリケーションを作成する際の手順は、大きく分けてレポートの「デザイン」と「出力」の2つに分かれます。
レポートの「デザイン」は、ActiveReportsのデザイナを使用します。ActiveReports for .NET 9.0Jは3種類のデザイナを提供しています。従来から提供されている、データ(レコード)の数だけセクションと呼ばれる領域を繰り返し表示することで1つのページが構築される「セクションレポート」、ページ単位でレポートをデザインする「ページレポート」、ページレポートを拡張し複数のデータソースをサポートする「RDLレポート」です。
詳しくは、CodeZineの記事『5分でわかるActiveReports帳票-9.0Jの新機能』を読んでいただくとして、ここではバージョン9.0Jで追加された新機能のうち、これは便利だなと感じた「ページレポートのレイヤー機能」と「ActiveReports Server」について紹介します。
ページレポートのレイヤー機能
ページレポートは、源泉徴収票や請求書、支払明細書など、単票の帳票を作成するのに適したレポートです。これまでのページレポートは、1枚のデザインシートにテーブルなどのコントロールを配置してデザインを作成していました。バージョン9.0Jではこのレイアウト編集に「レイヤー」という概念を導入し、より一層レイアウトを行いやすくしています。
レイヤーとは昔懐かしいOHPのシートのように、透明なセルシートを何枚も重ねていくような機能です。某有名グラフィックソフトでも使われている機能ですが、例えば1枚の帳票のデザインを部位ごとに1つずつ1枚のレイヤーに設定して作成していきます。1枚のレイヤーに作成したデザインは、他のレイヤーから操作することはできません。なので、こうすることで一度デザインを決めた部位は他の部位のデザイン中に誤って動かされてしまう、ということがなくなります。1か所修正したいだけなのに、余計なところまで手を加えるはめになってしまう、などというような無駄な作業が減少します。
例えば、今回作成するサンプルアプリケーションでは、ページレポートを4枚のレイヤーを使ってデザインしています。レイヤーは何枚も追加することができ、削除することもできます。レイヤー一覧を使用して、編集したいレイヤーを切り替えてレイアウトを編集します。
「ロック」を選択することで、そのレイヤーのデザインを固定できます。また、「表示」でデザイン時のレイヤーの表示・非表示を切り替えることができます。重なりあったレイヤーの中で1枚だけレイヤーを表示したい、などという場合に使用します。
また、スキャナなどで既存の伝票を読み込み、レイヤー機能を使ってその上にデータを表示するような使い方も可能です。たとえば、宅配伝票などのプレ印字の用紙にデータだけ印刷するようなケースでのアプリケーション開発やプレビューに使っても効果的な機能です。
レイヤー一覧の機能
レイヤーの追加・削除や重なり順序の入れ替えは、レイヤー一覧のツールバーを使用します。
レイヤーの追加
レポートを作成すると、"default"という名称の既定レイヤーがレイヤー一覧に自動的に追加されます。レポートで、レイヤーを追加するページを選択します。[レイヤー一覧]ツールバーで、[新規]ボタンをクリックします。"Layer1"という名前の新しいレイヤーがレポートとレイヤー一覧に追加されます。
レイヤーの削除
既定レイヤーを除くすべてのレイヤーは削除できます。レイヤー一覧で、削除するレイヤーを選択します。[レイヤー一覧]ツールバーで[削除]ボタンをクリックして、選択したレイヤーを削除します。これにより、選択したレイヤーとそのレイヤーに配置されたコントロールがレポートとレイヤー一覧から削除されます。
最前面/最背面への移動
[最背面へ移動]ボタンまたは[最前面へ移動]ボタンを使用して、選択したレイヤーに配置されたコントロールのグループを他のレイヤー上のコントロールの前面または背面に移動できます。レイヤー一覧で、順序を設定するレイヤーを選択します。[レイヤー一覧]ツールバーで[最前面へ移動]または[最背面へ移動]ボタンをクリックして、レイヤーに配置されたコントロールを最前面または最背面に移動します。
レイヤーのプロパティ
レイヤーのプロパティを使用して、以下の操作が行えます。既定レイヤー以外のレイヤー名の変更もプロパティで行います。
プロパティ | 値 | 説明 |
---|---|---|
DesignerLock | True/False |
レイヤーに配置されたコントロールをロックまたはロック解除します。ロックされたレイヤーのデザイナ面に配置されたコントロールは、キーボードまたはマウスによって移動またはサイズ変更できません。その他の編集機能(切り取り、コピー、貼り付け)とコントロールの追加または削除は可能です。 このプロパティは、レイヤー一覧の[ロック]チェックボックスを使用して設定することもできます。 |
DesignerTransparency | 0~1 | レイヤー上のコントロールの透明度を設計時に0~1の値に設定します。透明度が1に設定されたレイヤーはデザイナ上で見えなくなります。 |
DesignerVisible |
True/False |
レイヤーに配置されたコントロールがデザイナに表示されるかどうかを指定します。 このプロパティは、レイヤー一覧の[表示]チェックボックスを使用して設定することもできます。 |
Name | レイヤー名(文字列) | レイヤーの名前を設定します(既定レイヤーを除く)。 |
TargetDevice | None、Screen、Paper、Export、All |
選択したターゲットに基づいて、レイヤーに配置されたコントロールの可視性を指定または制限します。 None:レイヤーはどのターゲットデバイスにも表示されません。 Screen:レイヤーはビューワに表示されます。 Paper:レイヤーは印刷時に表示されます。 Export:レイヤーはエクスポート時に表示されます。 All:レイヤーはすべてのターゲット(すなわち、Screen、Paper、Export)に表示されます。 |
実際に使ってみると、レイヤーの有用性がお分かりになると思います。
ActiveReports 9.0J Serverの概要
今回のバージョンアップでの大きな変更点の一つは、ActiveReports 9.0J Serverが追加されたことです。これは、WindowsのWebサーバー(IIS)にインストールし、作成したレポートをサーバーで管理・共有することができるポータルサーバー機能です。
作成したレポートを専用のサーバーで管理することで、例えば複数の帳票発行機能を持ったプロジェクトを作成する場合では、1つのレポートデザインをチームで共有することができます。また、一度作成したレポートデザインの修正を別の担当者が行うことも容易に行えます。サーバーにレポートデザインを公開することで、上司や責任者も開発状況を把握することができます。
また、運用という視点で見た場合も、使いやすいポータル画面で帳票のアップロード、プレビュー・印刷、他ファイル形式への保存、スケジューリング実行などの機能があらかじめ組み込まれていますので、ActiveReports 9.0J Serverを導入した時点でこれらの機能を手軽に利用できますから、フルスクラッチで一からWeb帳票システムを作成するよりも低コストで帳票運用環境を構築することができます。
このように、レポート開発から運用まで一貫して管理できる、斬新なシステムです。
ActiveReports Serverの動作環境
ActiveReports Serverは、ActiveReports 9.0Jとは別にインストールします。
WindowsのWebサーバーであるInternet Information Services(IIS)にインストールしますので、 IISがインストールされている必要があります。また、ASP.NET 4.5および以下のシステムが必要です。
サーバー
- .NET Framework 4.5/4.5.1/4.5.2
- Windows Server 2008/Server 2008 R2/Server 2012/Server 2012 R2
- Internet Information Services
- ポート 4040(TCP)、7923(UDP)、26637(UDP)または57323(UDP)
クライアント
- Internet Explorer 9/10/11、Chrome 最新版/最新版-1(注1)
- iPad/iPhone Safari for iOS 8
注1
帳票ビューワ形式に「Flash」を選択した場合は、Internet Explorer9/10/11のみがサポートされます。またAdobe Flash Player 11以上(Windows)が必要です。
これらのシステムがあれば、後はインストーラの指示に従ってインストールするだけです。
筆者の場合は、ローカルのIISサーバーにインストールしましたのでURLはローカルになっていますが、ネットワークが構築されていれば、そのURLにアクセスするだけでアップロードしたレポートデザインにアクセスできます。
また、レポートごとにパスワード設定や閲覧・編集の権限を設定できますから、一般ユーザーと管理者権限とに分けてレポートを管理することができます。
ActiveReports Serverを設定すれば、レポートのアップロードはとても簡単で、Visual Studioにあるメニュー「レポート」の「サーバーに保存」を選ぶだけです。
ActiveReports Serverに接続していなければ、ダイアログにある「接続」ボタンで接続し保存できます。
サーバーからの取り出しも、同じくVisual Studioのメニュー「レポート」-「サーバーから開く」を選ぶだけです。
ActiveReports 9.0J Serverの詳しい説明は、別途CodeZineの記事『グレープシティ、帳票開発コンポーネント「ActiveReports for .NET 9.0J」にポータルサーバー構築機能を追加』をご参照ください。
ページレポートとActiveReports Serverを使ったアプリケーションの作成
では、さっそくアプリケーションを作成していきましょう。今回は、ページレポートのレイヤー機能を使い、簡単な給与明細書を作成するアプリケーションを作ってみます。
給与データはSQL Serverで作成されており、ここから支給・控除の明細データを取出し、1人ずつ給与明細書を作成します。データベースのデータは説明を分かりやすくするために、支給額等はすでに計算されて格納されているものを使用します。
このサンプルアプリケーションを作成する前に、SQL Server用のデータベース「給与明細」をSQL Serverで使えるように設定してください。
レポートの作成とデータ連結
まずはレポートを作成します。今回作成するのはページレポートで、一人一人のデータを単票で表示するレポートを作成します。
(1)プロジェクトのコンテキストメニューから「追加」-「新しい項目」を選びます。
(2)テンプレートの一覧が表示されますので、「ActiveReports 9.0Jページレポート(XML)」をクリックし、名前はデフォルトのまま「追加」ボタンをクリックします。
(3)Visual Studioにページレポートデザイナが表示されます。
(4)Visual Studioのツールバーにある「レポートエクスプローラ」ボタンをクリックします。
(5)「レポートエクスプローラ」が開きますので、「データソース」のコンテキストメニューから「データソースの追加」ボタンをクリックします。
(6)「レポートデータソース」ダイアログが開きますので、「サーバー名」を入力し、認証を選択してデータベース名「給与明細」をクリックし、OKボタンをクリックします。
(7)レポートエクスプローラにデータソースが設定されていますので、この上で右ボタンをクリックしてコンテキストメニュー「データセットの追加」をクリックします。
(8)データセットダイアログが表示されますので、「クエリ」タブをクリックします。そして、鉛筆アイコン「クエリデザイナで編集する」をクリックします。
(9)クエリデザイナが表示されますので、左ペインの「給与明細」を展開し、次の順番でフィールド名をダブルクリックします。自動的に右の「選択したフィールド」欄に、ダブルクリックしたフィールドが入力されていきます。
- 氏名
- 本給
- 家族手当
- 住宅手当
- 休日出勤手当
- 時間外手当
- 支給合計
- 所得税
- 地方税
- 健康保険料
- 雇用保険料
- 厚生年金保険料
- 控除合計
- 差引支給額
(10)フィールドが転送できたら「実行」ボタンをクリックします。下にある「結果」欄にクエリ結果が表示されます。
(11)クエリデザイナの「保存」ボタンをクリックします。
データセットダイアログに戻りますので、OKボタンをクリックしてダイアログを閉じます。
(12)レポートエクスプローラにデータセットが追加されています。展開してフィールドが設定されていることを確認します。
ページレポートのデザイン
データベース連結ができたら、ページレポートをデザインしていきます。レポートエクスプローラはそのまま表示しておいてください。ここでは、レイヤーを追加しながらデータをカテゴリ別にレイヤーに作成していきます。
レイヤーは全部で4枚で、各レイヤーには次のように項目を作成します。
レイヤー名 | 項目 |
---|---|
default | 支給明細 |
koujo | 控除明細 |
sikyuugaku | 差引支給額 |
Flame | 外側の枠線 |
それぞれのレイヤーでは、Tableコントロールを使用してデータベースデータを配置していきます。
最初のレイヤーの作成
(1)左のルーラーを左方向にスライドさせて、グリッドを広げて全部で17マスになるようにします。
(2)ツールバーの「レイヤー一覧」ボタンをクリックします。「default」という名前のレイヤーが表示されていますが、ページレポートを追加した時点でこの1枚が設定されます。レイヤー「default」は削除することも名前を変えることもできません。
(3)このレイヤーに支払われる項目を設定していきます。まず、ツールボックスから「Table」をレポートにドラッグ&ドロップし、グリッドの3行2列目に配置します。
(4)Tableのコンテキストメニューを表示し、「列の挿入」をクリックします。
(5)列数を「3」にしてOKボタンをクリックします。
(6)白い□のハンドルをドラッグし、テーブルの幅を広げます。
(7)テーブルで使用するデータをグループ化します。データをグループ化しないと、ただ単にデータが垂れ流しでコントロールに入力されていくだけなので、グループ化が必要になります。ここでは氏名ごとにデータをグループ化します。
ページのグレーの部分をクリックし、プロパティウィンドウの下部にある「ページレイアウトの設定」をクリックします。
(8)左ペインから「全般」を選び、右ペインの「データセット名」リストから「DataSet1」をクリックします。
(9)左ペインから「グループ化」を選び、右ペインの「グループ化の条件」リストから「氏名」をクリックします。
これでデータは氏名でグループ化されて使うことができるようになります。
(10)ここからテーブルにフィールドデータを設定していきます。まず、レポートエクスプローラからデータセットのフィールド「氏名」を、テーブルの最初の列の2行目にドラッグ&ドロップします。
これで、列ラベルとデータが最初の列に設定されます。
(11)同じように、残りの列の2行目に次のフィールドをドラッグ&ドロップします。
- 本給
- 家族手当
- 住宅手当
- 休日出勤手当
- 時間外手当
(12)1行目を選択し、プロパティウィンドウの次のプロパティを設定します。
プロパティ | 設定値 |
---|---|
BackGroundColor | LightCyan |
BorderColor | Blue |
BorderStyle | Solid |
これで、1行目の背景色と枠線が設定されます。
(13)今度は2行目を選択し、枠線だけを設定します。
プロパティ | 設定値 |
---|---|
BorderColor | Blue |
BorderStyle | Solid |
(14)3行目を選択し、コンテキストメニューから「行の削除」をクリックして削除します。
また、斜線のエリアをドラッグして2行目に合わせます。
(15)もう一つテーブルを追加し、最初のテーブルの下側に配置します。そして、コンテキストメニューから「列の削除」をクリックして2列を削除し、3行目も削除し1列2行のテーブルにします。また、最初のテーブルと同様、プロパティウィンドウで枠線と1行目の背景色を設定します。
プロパティ | 設定値 |
---|---|
BackGroundColor | LightCyan |
BorderColor | Blue |
BorderStyle | Solid |
(16)このテーブルの2行目に、フィールド「支給合計」をドラッグ&ドロップします。
これで、支給項目の表が出来上がりました。
(17)ここでデザイナの「プレビュー」タブをクリックし、デザイン結果とデータがちゃんと表示されていることを確認します。
2枚目以降のレイヤーの作成
続いて、控除項目のテーブルを作成します。これは、レイヤーをもう1枚追加して行います。
(1)デザイナ画面に戻り、レイヤー一覧の「新規」ボタンをクリックします。レイヤーが1枚追加されます。
(2)この状態でプロパティウィンドウの「Name」プロパティを「koujo」に変更します。
(3)この時点でアクティブなレイヤーは「koujo」になっており、すでに作成した支払項目のテーブルは操作できません。ここに、先ほどの支給項目と同じようにテーブルを2つ作成し、次のフィールドとプロパティを設定します。ただし、控除項目は5項目しかありませんから、最初のテーブルの列数は5で作成します。
最初のテーブル
- 所得税
- 地方税
- 健康保険料
- 雇用保険料
- 厚生年金保険料
プロパティ | 設定値 |
---|---|
BackGroundColor | LavenderBlush |
BorderColor | Red |
BorderStyle | Solid |
2つ目のテーブル
- 控除合計
プロパティ | 設定値 |
---|---|
BackGroundColor | LavenderBlush |
BorderColor | Red |
BorderStyle | Solid |
(4)レイヤーをもう一枚追加し、レイヤー名を「sikyuugaku」に変更します。そして、テーブルを作成して1列2行にし次のプロパティを設定します。
- 差引支給額
プロパティ | 設定値 |
---|---|
BackGroundColor | Cornsilk |
BorderColor | Black |
BorderStyle | Solid |
(5)レイヤーをもう1枚追加し、レイヤー名を「Flame」に変更します。そして、ツールボックスから「Shape」をドラッグ&ドロップし、レポートの枠線になるように広げます。
(6)レイヤー一覧でレイヤー「Flame」を選択し、ツールバーの「最背面に移動」をクリックします。これで枠線が一番下に移動します。
(7)これで給与明細書が出来上がりました。プレビューで仕上がりを確認します。そして、最後にレイヤー「default」をクリックし、TextBoxコントロールをページの上部にドラッグ&ドロップして、Valueプロパティに「平成27年8月 給与明細」と入力します。
(8)レポートエクスプローラの「共通フィールド-日付と時刻」をレポートの右上にドラッグ&ドロップします。これで、作成日時が表示されます。
以上で完成です。プレビューで仕上がりを確認します。
Windowsフォームビューワの設定
レポートが作成できたら、これをフォームで表示できるようにWindowsフォーム用ビューワを設定します。
(1)ツールボックスからViewerコントロールをフォームにドラッグ&ドロップします。そして、Dockプロパティを「Fill」に設定します。
(2)フォームのLoadイベントハンドラに次のコードを記述します。ページレポートのインスタンスを作成し、ViewerコントロールのLoadDocumentメソッドにそのインスタンスを設定して実行すれば、レポートがビューワで表示されます。
Public Class Form1 Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim file_name As String = "PageReport1.rdlx" Dim pageReport As New GrapeCity.ActiveReports.PageReport(New System.IO.FileInfo(file_name)) Dim pageDocument As New GrapeCity.ActiveReports.Document.PageDocument(pageReport) Viewer1.LoadDocument(pageDocument) End Sub End Class
namespace ActiveReports9_Winform_cs { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { string file_name = "PageReport1.rdlx"; GrapeCity.ActiveReports.PageReport pageReport = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(file_name)); GrapeCity.ActiveReports.Document.PageDocument pageDocument = new GrapeCity.ActiveReports.Document.PageDocument(pageReport); viewer1.LoadDocument(pageDocument); } } }
(3)アプリケーションを実行する場合は、licences.licxファイルにライセンスを記述する必要があります。ソリューションエクスプローラで「licenses.licx」をクリックして開き、以下の1行を追加します。
GrapeCity.ActiveReports.PageReport, GrapeCity.ActiveReports.v9
また、ページレポートのデザインファイルを、アップロードの実行フォルダに置く必要がありますので、デバッグで実行する場合は「PageReport1.rdlx」をexeファイルと同じフォルダにコピーします。
(4)アプリケーションを実行し、一人一人の給与明細が表示されることを確認します。
サーバーへの保存と読み出し
完成したページレポートを、ActiveReports Serverに保存します。また、新しいプロジェクトを作成し、このレポートを読み込んでみます。
(1)デザイナをデザイン状態にします。Visual Studioのメニュー「レポート」-「サーバーに保存」がアクティブになるので、これをクリックします。
(2)ActiveReports Serverに接続されていなければ、ユーザー名とパスワードを入力し、「接続」ボタンをクリックしてActiveReports Serverに接続します。
(3)「レポートの名前」に「給与明細」と入力して「保存」ボタンをクリックします。
(4)ActiveReports Serverにレポート名「給与明細」が表示され、サーバーに保存されたことが分かります。
右側のペインには、誰によってアップロードされたのか、更新日、作成日、作成者名、更新者名などレポートの改編履歴が表示されています。
(5)今度は新しいプロジェクトを作成し、そこにこのレポートを読み込んでみます。新しいプロジェクトを作成し、ページレポートを追加します。そして、Visual Studioのメニューから「レポート」-「サーバーから開く」をクリックします。
(6)「レポートの選択」にある「給与明細」をクリックして「開く」ボタンをクリックします。
(7)作成したページレポートがプロジェクトに組み込まれます。
まとめ
ActiveReports for .NET 9.0Jは、バージョンアップによってかなり強力な帳票作成コンポーネントになりました。特に本稿で紹介したページレポートのレイヤー機能は、帳票様式が複雑になればなるほどその有用性が高まります。いかにデザインしやすく、修正しやすいのかはアプリケーション開発の工期や工数に大きく影響します。その点では、このレイヤー機能は工期・工数の削減に大きく貢献できるのではないでしょうか。
開発プロジェクトの管理という点でも、ActiveReports 9.0J Serverが実装されたことで情報の共有化が図られ、より開発プロジェクトが進めやすくなっていくと思います。