頂いた案件でGrapecityのActiveReportsの開発経験という条件があったため、自分の復習と併せて学習していきたいと思います。
ActiveReports学習1
1. ActiveReports(アクティブレポート)とは
レイアウトや書式といった外観デザインの設定からデータ接続、印刷およびPDFへの出力設定まで、業務システムにおける帳票開発に必要なあらゆる機能を備えた帳票開発コンポーネントです。
1998年の発売開始からの開発ライセンスの累計販売本数は10万本を超え、開発者の皆様から圧倒的な支持を得ています。
私が開発に携わっているときは、アクティブレポート内のセクションレポートで主に作成をしてきました。
1-1. 優れたレポートデザイナ
デザイナーがVisual Studioに統合されているため、アプリケーション本体とそれぞれの機能が区切られることなく一貫して操作することができるシームレスな帳票デザインを行えます。
操作も直感的にできるので、外観設計にかかる時間を大幅に短縮できます。
コントロールの配置やプロパティの設定等も画面開発と類似しているためActiveReports初心者でも画面開発の経験があれば開発可能と思われます。
また、ヘッダーやフッターの設定については、Grapecity内のMultiRowを触ったことがあればプロパティの設定も可能かと思われます。
操作も直感的にできるので、外観設計にかかる時間を大幅に短縮できます。
コントロールの配置やプロパティの設定等も画面開発と類似しているためActiveReports初心者でも画面開発の経験があれば開発可能と思われます。
また、ヘッダーやフッターの設定については、Grapecity内のMultiRowを触ったことがあればプロパティの設定も可能かと思われます。
1-2. 豊富なレポートコントロール
ActiveReportsでは、様々な要件の帳票をデザインするための豊富なレポートコントロールを用意し、ラベルや振込伝票に埋め込むバーコードや、グラフィカルな帳票に欠かせないチャートも多種類提供しています。
私が開発や先方へのレビュー用にQRコードの開発もしたことがありますが、少し触った程度の人間でも簡単に開発でき、QRコードは情報が増えるほど複雑なコードになるため適切な情報量で作成することをお勧めします。
私が開発や先方へのレビュー用にQRコードの開発もしたことがありますが、少し触った程度の人間でも簡単に開発でき、QRコードは情報が増えるほど複雑なコードになるため適切な情報量で作成することをお勧めします。
1-3. マルチプラットフォーム対応ビューワ
ActiveReportsはWindowsフォーム、WPF、ASP.NET Webフォーム、JavaScript、Blazorの5つのアプリケーション形態に対応した帳票ビューワを提供しています。
ActiveReports1つで様々な形態のアプリケーションに対応可能です。
ActiveReports1つで様々な形態のアプリケーションに対応可能です。
1-4. 様々なフォーマットへの出力
ActiveReportsで作成した帳票は、PDF、Excel、TIFF、HTMLといったさまざまな形式にエクスポートすることができます。
1-5. エンドユーザーが帳票の外観を編集可能
Visual Studioがインストールされていない環境でも、帳票テンプレートを編集できる「エンドユーザーデザイナー」を提供しています。
顧客の要望や業務ロジックに合わせ、柔軟にカスタマイズ可能です。
顧客の要望や業務ロジックに合わせ、柔軟にカスタマイズ可能です。
2. ActiveReports特長
ActiveReports for .NETは、Visual Studio上で帳票アプリケーションを開発できる .NET開発コンポーネントです。
Windowsフォーム、WPF、ASP.NET、ASP.NET Core、Blazorの5つのプラットフォームをサポートし、レイアウトや書式といった外観デザインの設定からデータ接続、印刷およびPDFへの出力設定まで、帳票開発に必要なあらゆる機能を備えています。
エンドユーザーから厳格な要求が突きつけられる日本の帳票開発において、プログラマの負担軽減と生産性向上を目指し、1998年の発売以来開発の現場から圧倒的な支持を得ています。
3. 3つのデザイン方式を帳票タイプにあわせて選択
ActiveReportsは、「セクションレポート」、「ページレポート」、「RDLレポート」の3種類のレポートデザイン方式を採用しています。
帳票タイプに合わせ3つのレポート形式を使い分けることで、帳票開発に求められる生産性と柔軟性を満たすことが可能です。
3-1. セクションレポート
DetailやGroupHeader/Footerといった「セクション」ごとにレイアウトをデザインし、データ(レコード)の数だけこれらのセクションが繰り返し表示されることで1つのページを構築するレポート形式です。
大量データの一覧として出力する帳票、データを繰り返し表示する帳票に最適です。
また、Windowsフォームのようなイベントモデルを提供しており、開発者が使い慣れているVB.NETやC#のコードで帳票のレイアウトを柔軟に制御できます。
私が実際に作成したことがあるのが、この機能になります。
Detailでは、DBからとってきたデータの中身をMulirowのRow(列)のように表示することができます。
GroupHeaderは、プロパティにフィールドを設定することができるため、グループやカテゴリ等がDetailで変わった場合やロジカル的にフラグを立てた場合に次ページの印刷や小計をDetailの間に挟むことができます。
Footerでは、総合計等印刷する場合に使います。
大量データの一覧として出力する帳票、データを繰り返し表示する帳票に最適です。
また、Windowsフォームのようなイベントモデルを提供しており、開発者が使い慣れているVB.NETやC#のコードで帳票のレイアウトを柔軟に制御できます。
私が実際に作成したことがあるのが、この機能になります。
Detailでは、DBからとってきたデータの中身をMulirowのRow(列)のように表示することができます。
GroupHeaderは、プロパティにフィールドを設定することができるため、グループやカテゴリ等がDetailで変わった場合やロジカル的にフラグを立てた場合に次ページの印刷や小計をDetailの間に挟むことができます。
Footerでは、総合計等印刷する場合に使います。
3-2. ページレポート
帳票のレイアウトを1ページまるごとデザインするレポート形式です。
印刷結果とまったく同じレイアウトで帳票をデザインできるため、項目の配置が複雑な帳票も簡単に作成できます。
データを繰り返し表示する部分は、ListコントロールやTableコントロールといったデータ領域が利用できます。WYSIWYGデザイナーにより直感的にデザインできます。
日本に多い定型のレイアウトの帳票を作成するのに最適なレポート形式です。
ページレポートは、案件で一度取り扱ったことはあるが、コントロールのプロパティや配置等に癖があり開発が難航した覚えがあります。
印刷結果とまったく同じレイアウトで帳票をデザインできるため、項目の配置が複雑な帳票も簡単に作成できます。
データを繰り返し表示する部分は、ListコントロールやTableコントロールといったデータ領域が利用できます。WYSIWYGデザイナーにより直感的にデザインできます。
日本に多い定型のレイアウトの帳票を作成するのに最適なレポート形式です。
ページレポートは、案件で一度取り扱ったことはあるが、コントロールのプロパティや配置等に癖があり開発が難航した覚えがあります。
3-3. RDLレポート
セクションの出力位置やページの用紙サイズといったレイアウト上の制約を意識することなく、自由にレポートコントロールをレイアウトできるレポート形式です。
データを繰り返し表示する部分は、ページレポート同様、ListコントロールやTableコントロールといったデータ領域が利用できますが、データ数に応じてこれらのコントロールは伸長していくので、実行結果はデータ数に依存します。
定型の様式をもった帳票ではなく、データ件数が変化するレポートを柔軟に表示したい場合や、データソースの異なるテーブルやグラフを自由に配置したい場合に最適です。
請求書等の決まったフォーマットでなく、円グラフや棒グラフといった資料を印刷する際は、レポートを自由に作成できるRDLレポートが実用的に思います。
データを繰り返し表示する部分は、ページレポート同様、ListコントロールやTableコントロールといったデータ領域が利用できますが、データ数に応じてこれらのコントロールは伸長していくので、実行結果はデータ数に依存します。
定型の様式をもった帳票ではなく、データ件数が変化するレポートを柔軟に表示したい場合や、データソースの異なるテーブルやグラフを自由に配置したい場合に最適です。
請求書等の決まったフォーマットでなく、円グラフや棒グラフといった資料を印刷する際は、レポートを自由に作成できるRDLレポートが実用的に思います。
4. セクションレポート:動的な処理をするレポート
4-1. TextBoxコントロールのOutputFormatプロパティに書式を設定する
TextBoxコントロールには出力する値の書式を設定するためにOutputFormatプロパティが用意されています。
4-2. 対象コントロールのDataFieldプロパティに式を記述する
DataFieldプロパティに記述する式をフィールド式といいます。
フィールドに設定した値をフォーマットによって表示等制限することができる
フィールドに設定した値をフォーマットによって表示等制限することができる
4-3. フィールド式
TextBoxなどのセクションレポートのコントロールには、DataFieldプロパティがあります。
通常はここにデータソース内のフィールド名を設定します。
このときはフィールド名そのものではなく、フィールドを使用した式を記述することで、データを加工して表示することができます。
フィールド式の先頭には「=」をつけます。
=の後に、フィールドを含めた言語構文の「式」を記述します。
また、文字列の加工に使用することもできます。
OutputFormatプロパティを使った処理でも加工は可能です。
必ずしもフィールドを使用しなければならない訳でなく、.NET FrameWork標準のクラスも一部使うことができます。
例)DateTime.Nowプロパティから現在の日付を取得し、AddDaysメソッドで一日追加した日付を表示した場合は
=System.DateTime.Now.AddDays(1).ToString(“yyyy/MM/dd”)
このように記述が可能になります。
通常はここにデータソース内のフィールド名を設定します。
このときはフィールド名そのものではなく、フィールドを使用した式を記述することで、データを加工して表示することができます。
フィールド式の先頭には「=」をつけます。
=の後に、フィールドを含めた言語構文の「式」を記述します。
また、文字列の加工に使用することもできます。
OutputFormatプロパティを使った処理でも加工は可能です。
必ずしもフィールドを使用しなければならない訳でなく、.NET FrameWork標準のクラスも一部使うことができます。
例)DateTime.Nowプロパティから現在の日付を取得し、AddDaysメソッドで一日追加した日付を表示した場合は
=System.DateTime.Now.AddDays(1).ToString(“yyyy/MM/dd”)
このように記述が可能になります。