SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)

帳票Windowsアプリ実践構築ガイド
ActiveReports for .NETを使いこなす!

  • このエントリーをはてなブックマークに追加

 今回は、ActiveReportsに付随しているSeikyuサンプルを基にして、実際の業務システム構築時に近い形にアレンジした帳票アプリケーションを作ってみました。ActiveReports for .NETでの、より実践的なアプリケーション構築方法を解説していきます。

  • このエントリーをはてなブックマークに追加

はじめに

 業務システムとは簡単に言えば、業務データを入力、蓄積、出力して活用する事で付加価値を高め、業務を効率的・効果的に遂行するシステムです。出力方法としては、画面表示、データ出力、印刷などがあります。

 グレープシティのActiveReports for .NETは、この3つの出力方法すべてにおいて業務システムに強力な表現力を付与できる.NETコンポーネントです。

 今回、ActiveReportsに付随しているSeikyuサンプルを基にして、より実際の業務システム構築時に近い形にアレンジしたWindowsアプリケーションをいくつか用意してみました。作成の手順を順に追っていきながら、ActiveReports for .NETでの実践的なアプリケーション構築方法を解説していきます。

Seikyuサンプルからの変更点

 Seikyuサンプルは、請求先を選択するとMicrosoft Accessのmdbファイルから請求先向けのデータを取得して、請求明細書をプレビュー表示するアプリケーションです。

図1:Seikyuサンプルの実行例
図1:Seikyuサンプルの実行例

 しかし、このままでは、複数の請求先の伝票を1度に印刷するなど、業務システムとして実際に起こりうる局面に対応できるとは限りません。

 そこで、Seikyuサンプルを拡張して、次のような変更を加えた「CZ0905Bound」を作成しました。

  1. 印刷単位ではなく請求書単位に請求額合計が印刷できるようにする
  2. 請求先+請求書順に印刷できるようにする
  3. 請求書が複数ページになる時を考慮して、請求書単位にページ番号を付与する

ActiveReportsでのレポート定義について

 サンプルプロジェクト「CZ0905Bound」作成の手順を追っていく前に、まずはActiveReportsでのレポート定義について説明しておきます。

 ActiveReportsの帳票デザイナは、Windowsフォームデザイナによく似た構成になっています。また、使用するコントロールも似ているため、Windowsフォームと同じ感覚でデザインできます。

 ActiveReportsでレポートを定義するには、まず[新しいプロジェクトの作成]で、Windowsフォームアプリケーションのプロジェクトを作成し、[新しい項目の追加]で「ActiveReports 3.0ファイル」を選択して、ActiveReports帳票定義体を追加します。この帳票定義体にいろいろなActiveReports帳票コントロールを配置することで、レポートを定義します。

ラベルコントロールとテキストボックスコントロールの使い分け

 ActiveReportsの帳票コントロールには、「ActiveReportsラベルコントロール」と「ActiveReportsテキストボックスコントロール」があります。

 Windowsフォームの場合、項目名などにラベルコントロールを、入出力データにテキストボックスコントロールを使うといった使い分けは、比較的直観的に判断できます。では、ActiveReportsでは2つのコントロールはどのように使い分けるのでしょうか。

 ActiveReportsラベルコントロールとActiveReportsテキストボックスのプロパティを比較したのが表1です。

表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つのコントロールを使い分けています。

次のページ
レポートを定義する

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

 国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。 個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。 Microsoft MVP for Windows Development ブログ:http://hatsune.hatenablog.jp/

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/3911 2009/05/14 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング