はじめに
業務システムとは簡単に言えば、業務データを入力、蓄積、出力して活用する事で付加価値を高め、業務を効率的・効果的に遂行するシステムです。出力方法としては、画面表示、データ出力、印刷などがあります。
グレープシティのActiveReports for .NETは、この3つの出力方法すべてにおいて業務システムに強力な表現力を付与できる.NETコンポーネントです。
今回、ActiveReportsに付随しているSeikyuサンプルを基にして、より実際の業務システム構築時に近い形にアレンジしたWindowsアプリケーションをいくつか用意してみました。作成の手順を順に追っていきながら、ActiveReports for .NETでの実践的なアプリケーション構築方法を解説していきます。
Seikyuサンプルからの変更点
Seikyuサンプルは、請求先を選択するとMicrosoft Accessのmdbファイルから請求先向けのデータを取得して、請求明細書をプレビュー表示するアプリケーションです。
しかし、このままでは、複数の請求先の伝票を1度に印刷するなど、業務システムとして実際に起こりうる局面に対応できるとは限りません。
そこで、Seikyuサンプルを拡張して、次のような変更を加えた「CZ0905Bound」を作成しました。
- 印刷単位ではなく請求書単位に請求額合計が印刷できるようにする
- 請求先+請求書順に印刷できるようにする
- 請求書が複数ページになる時を考慮して、請求書単位にページ番号を付与する
ActiveReportsでのレポート定義について
サンプルプロジェクト「CZ0905Bound」作成の手順を追っていく前に、まずはActiveReportsでのレポート定義について説明しておきます。
ActiveReportsの帳票デザイナは、Windowsフォームデザイナによく似た構成になっています。また、使用するコントロールも似ているため、Windowsフォームと同じ感覚でデザインできます。
ActiveReportsでレポートを定義するには、まず[新しいプロジェクトの作成]で、Windowsフォームアプリケーションのプロジェクトを作成し、[新しい項目の追加]で「ActiveReports 3.0ファイル」を選択して、ActiveReports帳票定義体を追加します。この帳票定義体にいろいろなActiveReports帳票コントロールを配置することで、レポートを定義します。
ラベルコントロールとテキストボックスコントロールの使い分け
ActiveReportsの帳票コントロールには、「ActiveReportsラベルコントロール」と「ActiveReportsテキストボックスコントロール」があります。
Windowsフォームの場合、項目名などにラベルコントロールを、入出力データにテキストボックスコントロールを使うといった使い分けは、比較的直観的に判断できます。では、ActiveReportsでは2つのコントロールはどのように使い分けるのでしょうか。
ActiveReportsラベルコントロールとActiveReportsテキストボックスのプロパティを比較したのが表1です。
プロパティ名 | Label | TextBox | 備考 |
---|---|---|---|
Alignment | ○ | ○ | コントロールの境界内のテキストの配置を取得・設定します。 |
Angle | ○ | × |
コントロール領域のテキストの角度(傾き)を取得・設定します。 |
BackColor | ○ | ○ | コントロール領域の背景色を取得・設定します。 |
Border | ○ | ○ | コントロールの各辺の罫線スタイルを定義する罫線オブジェクトを取得します。 |
Bounds | ○ | ○ | コントロールの位置とサイズを定義する矩形を設定する、もしくは返します。 |
CanGrow | × |
○ | コントロールの内容に合わせて、コントロールの高さを拡大するかどうかを決定します。 |
CanShrink | × |
○ | フィールドの値に合わせて、フィールドの高さを縮小するかどうかを決定します。 |
CharacterSpacing | ○ | ○ | 文字ピッチを取得・設定します。単位はポイントです。 |
ClassName | ○ | ○ | スタイルルールのクラス名を取得・設定します。スタイルルールはコントロールの書式設定に使用されます。 |
CountNullValues | × |
○ | DBNull値を集計フィールドにゼロとして含めるかどうかを決定します。 |
DataField | ○ | ○ | データソースの、コントロールに連結するフィールドの名前を取得・設定します。 |
DistinctField | × |
○ | 重複を除去する集計関数で使用するデータフィールドの名前を取得・設定します。 |
Font | ○ | ○ | コントロールテキストの印刷に使用するフォントオブジェクトを取得・設定します。 |
ForeColor | ○ | ○ | コントロールの前景色(フォント)を取得・設定します。 |
Height | ○ | ○ | コントロールの高さを取得・設定します(ピクセル単位)。 |
HyperLink | ○ | ○ | ビューワのHyperLinkイベントで指定した場所に移動するためのURLを取得・設定します。HTMLやPDFにエクスポートした場合、URLは自動的にアンカータグやハイパーリンクに変換されます。 |
Left | ○ | ○ | コントロールの左端の座標を取得・設定します。 |
LineSpacing | ○ | ○ | 行間を取得・設定します。単位はポイントです。 |
Location | ○ | ○ | コントロールの位置を取得・設定します。 |
MultiLine | ○ | ○ | ラベルコントロールでテキストを複数行表示するかどうかを示す値を取得・設定します。 |
Name | ○ | ○ | コントロールの名前を取得・設定します。 |
OutputFormat | × |
○ | ValueプロパティをTextプロパティに格納する前に書式設定するマスク文字列を取得・設定します。 |
Parent | ○ | ○ | コントロールの親セクションへの参照を取得します。 |
RightToLeft | ○ | ○ | 右から左へ記述するフォントを使う地域をサポートするために、コントロールの要素を並びかえるかどうかを示す値を取得・設定します。 |
Size | ○ | ○ | コントロールのサイズを取得・設定します。 |
Style | ○ | ○ | ラベルのスタイル文字列を取得・設定します。 |
SummaryFunc | × |
○ | DataField値の処理に使用する集計関数の種類を取得・設定します。 |
SummaryGroup | × |
○ | 小計を計算するときに集計値をリセットするのに使用するグループヘッダセクションの名前を取得・設定します。 |
SummaryRunning | × |
○ | データフィールドの集計値が各レベル(詳細、グループ、ページ)で累積されているかリセットされているかを表す値を取得・設定します。 |
SummaryType | × |
○ | 実行する集計の種類を表す値を取得・設定します。 |
Tag | ○ | ○ | コントロールに付随するユーザー定義の情報を取得・設定します。 |
Text | ○ | ○ | 印刷するラベルのテキストを取得・設定します。 |
Top | ○ | ○ | セクション内のコントロールの上端の、セクションに対する相対的な座標を取得・設定します。 |
Value | ○ | ○ | Labelコントロールの現在の値を取得・設定します。 |
VerticalAlignment | ○ | ○ | コントロールの境界内におけるラベルテキストの垂直方向の配置を取得・設定します。 |
Visible | ○ | ○ | コントロールを印刷するかどうかを決定します。 |
Width | ○ | ○ | コントロールの幅を取得・設定します。 |
WordWrap | ○ | ○ | ラベルコントロールで複数行表示するときに、必要に応じて自動的に折り返しを行うかどうかを示します。 |
単純なデータ出力ならばActiveReportsラベルコントロールでも可能です。しかし、プロパティを比較すると分かるようにActiveReportsテキストボックスコントロールには、ActiveReportsラベルコントロールにない集計用プロパティが存在します。
また、OutputFormatプロパティの存在からも推測すると、やはりActiveReportsテキストボックスコントロールは実行時に動的に変化するような部分に使う事を想定していると考えられます。
今回のサンプルプロジェクト「CZ0905Bound」でも、この切り分けに基づいて2つのコントロールを使い分けています。