Microsoft Access 掲示板

レポートグループ値の総合計をレポートヘッダーに表示させたい / 14

25 コメント
views
4 フォロー
14

レポートヘッダーに =Sum([税込み日別合計]) とすると、全レコード分繰り返されて集計されてしまうので、ここは、DSum関数を使う必要があります。

=DSum("税込み日別合計","税込み日別合計を表示するクエリ")

hirotonさん提案のVBAで累計していく方法もレポートヘッダーに表示しようとなると、結構はまることになります。
レポートのイベントの発生メカニズムを理解しておく必要があります。

レポートのイベントの発生メカニズムの研究 - hatena chips

レポートのイベントの発生メカニズムの研究 その2 - hatena chips

方法としては、下記のような考え方になります。
=Pages と総ページ数を表示するテキストボックスを配置しておく。
すると、総ページ数を取得するために、先頭レコードから最終レコードまでFormatイベントのみが発生する。
これで総ページ数を取得できたら、改めて先頭レコードに戻って最終レコードまでFormatイベントとPrintイベントが発生して実際にレポートしてと出力します。

この最初のループの時にFormatイベントで合計を累計していきます。
2回目のループのレポートヘッダーのFormatイベントで累計した合計をテキストボックスに代入します。
1回目のループかどうかの判断は pages が0かどうかで判断できます。

Option Compare Database
Option Explicit

Dim 税込総合計 As Currency

Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer)
    If  Me.Pages = 0 And Me.FormatCount = 1 Then 税込総合計 = 税込総合計 + Me!日合計 * 1.1
End Sub

Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
    If  Me.Pages < 0 Then Me!請求額総計 = 税込総合計
End Sub

とりあえず上記のような感じですが、レポートの設定によってはいろいろ難しいことも発生しますので、実際に動作確認しながら、修正していく必要があるかもしれません。

通報 ...