<HOME <お願い事項 <Access2000 TOP <Access97 TOP <サイト内検索 | ||
Ac2002--VBAの沼 > データがなくても罫線を10行なら10行分引く見積書 | ||
1 2 |
はー・・・レポートの前提としては、こんな感じでいいですかね・・・。
では、コードを書き始めるといたしましょう。VBEのウィンドウを開いてください。
変数の宣言のところからいきましょう。
前回と違うところが2箇所あります。
今回は、グループごと(見積番号ごと)に、印刷するレコード件数を判断していきますので、グループヘッダーで変数の準備をします。
これがなんでなのかは・・・皆さん、お分かりですよね。大丈夫ですよね???
そういうレポートを作ったんですもんね。見積番号ごとに印刷するレポートを・・・。
もうひとつは、Dcount関数の書き方です。
これで、「これから印刷しようとしている見積番号と同じ番号を持つレコード」を、見積明細テーブルからカウントして出します。
さっきは、テーブル全件を数えましたからこんなややこしくなかったんですけどね。
さっき、見積番号のテキストボックス名を変更された方は、式の書き方、注意してくださいね。
ダブルコーテーションやアンパサンドの使い方が難しいかもしれませんが、記号ひとつひとつにはちゃんと意味がありますから、がんばって入力してみてください。
後はだいたい同じようなもんだと思います。
詳細セクションのFormat時のイベントを作っていきましょう。
まずは・・・一番外枠のIf文から書いてしまいましょう。
AAAに1を足しこむ処理をお忘れなく・・・。
さらに今回は、詳細セクションの左端に作った非連結テキストボックスに、AAAの値を代入します。
これが、行番号になるわけです。
前半戦は、こんな感じです↓
レコード件数が10行きっちりのとき、グループフッターをどうするかによって、2択にするか3択にするか考えるんだということ、前回お話しましたよね。
わたしは前回同様3択にしてみました。
そして、10行に達してない場合の処理は、こんなふうになりました。
テキストボックスの名前や数が違うだけで、やってることはさっきと同じです。
ふいー・・・大変だ・・・。
プレビューしてみましょう。
1件目の見積には、明細が13行ありましたので・・・。
1ページ目は、10行で改ページしてます。
2ページ目が、↑こうなっちゃうんですよね・・・。
ここでどうするか、また考えなくちゃなりません。
うーん・・・。
そしたら、ページヘッター部分を活用してみましょうか。
ページヘッダーを少し広げて、見積番号ヘッダー部分にある「見出し」用のラベルと同じものを作ります。
コピーして貼りつけちゃってください。
ページヘッダーを普段は不可視にしておきます。
で、詳細セクションのイベントの中で、改ページするときに、このページヘッダーも可視状態にします。
各セクションが何番なのかは、以前ヘルプで調べましたよね。
忘れちゃったよそんなの!!という方は、VBEのウィンドウのヘルプで、Section というキーワードで調べてみてください。
何番なのか載ってます。
これだけだと、出てほしくないところでもページヘッダーが出てきちゃうので、必要ないところでは不可視になるように、下の方でFalseを代入します。
こうしておけば、明細が2ページ以降に渡った場合、見出し部分のラベルが一番上に印刷されると思います。
ここまで作りこんじゃうことが、果たしていいことかどうか、わからないんですけどね・・・。
実際にはこういうのは、「どういう見積書を作るのか」によって変わってきますから・・・最終的には、皆さんおひとりおひとりが、作りたいレポートと向き合って試行錯誤を繰り返さないと完成しないものなんです。それだけは、理解してください。
ここまでの流れで仕上がったコードです。
でも・・・見積書みたいなレポートは、会社によってデザインが異なるものだと思います。
レポートのデザインによっては、もっといろんなことを盛り込まないとならないかもわからないですが、基本的なことは同じだと思います。
ぜひとも、基本を理解いただいて、いろんなレポートの活用なさってみてください。