山田健一のブログ

業務に強いフリーITエンジニア 山田健一のブログです

.NET で使用できる帳票ツールについて(9)

私はフリーITエンジニアとして、業務分析、業務改善提案を含む設計、製造、受入検査を含む検査、システム運用開始後の運用改善提案など、様々な分野を担当しています。

「.NET で使用できる帳票ツールについて」の続編です。

RapidReport の評価報告第7回目になります。

今回は、受注月報を作成します。
帳票型のExcelファイルで受注月報を作成すると、次のような形になります。

 

f:id:yamadaken1:20151201165310j:plain

2次加工を意識したExcel ファイルなら、これで問題はありませんが、帳票として見た場合、得意先コード、得意先略称が並んでいて、少々、もったいない気がします。表示したい項目数が増えてくると、レイアウトが厳しくなります。

そこで、次のようなレイアウトの帳票を作成することにします。

 

f:id:yamadaken1:20151201165415j:plain

この受注月報は画面から、対象年月を指定することを想定しています。
したがって、レイアウトにある「受注日:2000/01/01 ~ 2000/01/31」の日付範囲データはレポート用データに含まれていません。
RapidReport では GlobalScope という手段で帳票にデータを渡します。

チュートリアルの売上明細表をもとにして受注月報を作成することにします。
売上明細表は GlobalScope や部門計などの機能を持っているので、参考にするのに適切と判断しました。

ただし、レポートの構造が若干異なっています。
売上明細表は 部門ごとに改ページを行い、集計は伝票ごと、部門ごととなっています。

今回の受注月報は、集計は得意先ごとと総合計です。
総合計は、売上明細表にはなかったので、追加機能になります。
また、受注月報では得意先コードが変わっても、得意先コードと得意先名を印字して、改ページは行いません。
そして、部門ごとの計は存在しません。
したがって、レポートの帳票構造は、次のような形になります。

f:id:yamadaken1:20151201165510j:plain

この構造を帳票イメージに当てはめると、次のようになります。

f:id:yamadaken1:20151201165543j:plain

前説明はこれまでで、いよいよ作成にかかります。

チュートリアルの売上明細表は、
RapidReport の example フォルダ内の各言語のフォルダの report フォルダに
example2.rrpt として、配布されていますので、これをコピーして、
受注月報.rrpt とします。
この 受注月報.rrpt をダブルクリックして作業開始です。

RapidReport が起動したら、プレビューボタンをクリックして、レポート用のデータを作成します。データはDBから取得することを想定していますが、ここでは解説を省略します。このシリーズのバックナンバーを参照してください。

 

f:id:yamadaken1:20151201165625j:plain

DBからのデータには、GlobalScope が含まれません。レポートデザインに GlobalScope のデータがあると作業が進めやすいので、GlobalScope のサンプルデータを作成します。
デザイン用データの global タブをクリックしてください。
まだ、何も定義していないので、次のように何もない状態になります。

f:id:yamadaken1:20151201165656j:plain

ここで、[キーを推測]ボタンをクリックします。
すると、レポート定義の中から、必要な GlobalScope を探しだして、リストアップしてくれます。

f:id:yamadaken1:20151201165721j:plain

チュートリアルの売上明細表をもとにしたのは、この機能を利用したかったという理由もあります。
リストアップされた
startDate
endDate
printDate
を受け入れ、適切なデータを設定して、kaisha は削除します。

GitHub には、完成したレポート用データが含まれています。

レポートデザイン用のデータができたので、レポートデザインに移ります。
最初に行うのは、帳票構造の変更です。

レポートの見出しを 受注月報 に変更します。
チュートリアルの売上明細表では金額をカスタム列機能で実現していましたが、
受注月報 ではDBからの取得としています。したがって、カスタム列は不要なので削除します。

f:id:yamadaken1:20151201165755j:plain


次に「部門グループ」を無名のグループに変更し、「ブレーク条件キー」を削除します。

f:id:yamadaken1:20151201165823j:plain

そして、ボディ コンテントの下の無名のグループを 得意先グループ に変更し、
ブレーク条件キーに「得意先コード」を指定します。

f:id:yamadaken1:20151201165904j:plain

部門フッターも 得意先フッター に変更します。

得意先グループの真下にある 部門ボディ コンテントは 得意先ボディ に変更します。

ここまで作業すると帳票構造は次のようになります。

f:id:yamadaken1:20151201165927j:plain

明細グループを得意先ボディの下に移動(グループの格上げ)を行います。今回作成する受注月報では、伝票グループに相当する集計が存在しないからです。

ただし、執筆時点のバージョンではグループの格上げ機能が存在しませんので、ちょっと遠回りな方法でグループを格上げします。

まず、得意先グループにコンテントを追加します。

f:id:yamadaken1:20151201170013j:plain

この追加したコンテントに 伝票グループをドラッグします。

f:id:yamadaken1:20151201170040j:plain

明細グループを得意先ボディにドラッグします。

f:id:yamadaken1:20151201170105j:plain

伝票グループの上の(コンテント)を削除します。

f:id:yamadaken1:20151201170123j:plain

最後に、上にある無名の(グループ)にコンテントを追加して、総合計コンテントとします。

これで構造変更は完了です。

レポートのデザインに移ります。

帳票名を受注月報に変更し、レイアウトに合わせて移動します。

ページ番号や印刷日付は残します。レイアウトに照らしあわせて少し上に移動します。
global.kaisha の式が設定されているフィールドは削除します。
集計期間: → 受注日:
部門: → 得意先:
とそれぞれ変更し、得意先コードの右のフィールドは 式プロパティーを
.得意先コード
.得意先略称
にそれぞれ変更し、モックや幅を適切に変更します。

得意先: から .得意先略称 までは得意先ボディにカット&ペーストで移動しますが、事前に得意先ボディのサイズを 35 に広げておきます。

明細 コンテント内の要素はすべて入れ替えとなりますので、削除します。
プロパティ ウィンドウの 要素を 展開して「×削除」ボタンをクリックすると確実です。

売上日付などの列見出しや罫線も不要なので削除します。

得意先ボディには列見出しも配置します。

明細グループ の 配置-y に 35を設定し、
明細 コンテントに データフィールドを配置していきます。

配置はレイアウト画像を使用するのが効果的です。
レイアウト画像については
「.NET で使用できる帳票ツールについて(4)」で解説しています。

レイアウトができたら、プレビューで確認してみてください。

次は、得意先フッターに 得意先計を配置しますが、得意先フッターは「売上明細表」のものを流用した関係で表示条件に「(> count# 1)」という記述がありますので、これを削除してください。
サイズを 25 に設定します。これは、次の得意先グループと距離を開けるためのものです。
得意先計 のテキストと 式に「sum.受注金額」を指定したフィールドを配置します。

同じように、総合計 コンテントのサイズを 15 に設定し、
総合計 のテキストと 式に「sum.受注金額」を指定したフィールドを配置します。

総合計 の位置が下に配置されていますが、これも「売上明細表」のものを流用した副作用です。
ボディのサイズを 445 から 70 に変更してください。
「売上明細表」は1ページの行数を固定にするために サイズに 大きな数値が設定されていましたが、「受注月報」ではその必要がないので、小さな値にします。

以上で完成です。
プレビューを見てみましょう。

f:id:yamadaken1:20151201170247j:plain

f:id:yamadaken1:20151201170309j:plain

f:id:yamadaken1:20151201170323j:plain

 

続きます。