<HOME  <お願い事項  <Access2000 TOP   <Access97 TOP   <サイト内検索
  Ac2002--VBAの沼 > レポートでページ合計
   1 2



レポートでページ合計_2

この処理のポイントは、「変数」「値の代入」です。
どちらも一度お話し済みのことですし、そんなに抵抗ないと思います。
レポートは、詳細セクションを1行ずつ繰り返し印刷します。なので、印刷するとき(フォーマットするとき、という表現をとることもありますが)に、金額をどんどん足しこんで、足しこんだ合計をページフッターのテキストボックスに代入していくわけです。累計を出す、みたいな感じですね。
かなり地味な作業です。VBAなんてこんなもんですよ。

以前、テキストボックスの値に100足しこんでいくプロシージャ作りましたよね。
まさに、アレです。
イメージとしては、毎行毎行「金額」フィールドを累計していって、ページフッターを印刷するときに、非連結のテキストボックスに代入します。
非連結のテキストボックスは、ホントに非連結になってないといけないので、

コントロールソースは空っぽにしておきます。
わたしのは、[テキスト16]っていう名前のテキストボックスでした。このまま作業を進めますね。

単に、宣言した変数に、どんどん金額が累計されるようにすればいいだけなんですが、
ただし、今回の場合は、

これではいかんのです。
これはですね・・・要は、「詳細」というセクションを印刷するたびに新たに変数を宣言しちゃうことになるわけなんですよ。これだと。
つまり・・・。毎行毎行、変数の中身が空になるわけです。
要するに、「詳細セクションの印刷時」というイベントが、どういうタイミングで発生するか・・・ってことなんですよ。

そこで、こうして、変数を一番先頭に宣言しておきます。

ここに書いておけば、このレポート全体で共通の変数として使えます。



で、詳細セクションの印刷のときに毎度やることは、変数にどんどん金額を足しこんでいく作業です。

そして、ページフッターの印刷時のイベントで、

テキストボックスに、ここまでの合計を代入します。

もし、「ページごとの合計」にしたいのなら、このあと、変数にゼロを代入して、変数の中身をクリアしておきます。



こんな感じでしょうか。



どうでしょう。これで、毎ページ一番下に、ページ合計が出るようになると思います。