Microsoft Access 掲示板

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

25 コメント
views
4 フォロー
15
hiroton 2023/06/06 (火) 18:00:11 74852@f966d

いずれにせよ、様々な条件に合わせて手を入れる必要は出るでしょう
細かいこと無視するなら

Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
    Me!月合計 = Me![日付毎数合計*1.1の集計:全体]
End Sub

画像1
画像2

こんなんでも動きますね
レポートに計算用コントロールを配置するか、VBAで変数を用意するかはまぁ好みで

[日付毎数合計*1.1]は数値確認用です(いらない)
※([日付毎数合計*1.1]とか[日付毎数合計*1.1の集計:全体]とか、実際にはこんな名前つけてはいけませんよ)


レポートヘッダーはACCESSの中でも特に厄介な案件ですね。正直「レポートヘッダー?じゃあVBAね」と思います。たいてい、何とかしようとするよりよっぽど楽なので

あとはまぁ、ヘッダーフッターの誤表記とか、フッターによる検索汚染とか、いつも以上に意識しておかないと話がかみ合わなくなったりするのも厄介ですね

通報 ...
  • 16

    おお!これはいいですね。
    集計実行で累計を計算させて、VBAでフッターのフォーマット時にヘッダーに代入。
    シンプルですし、確実です。

    =Pages のテキストボックスは必須ですね。
    こちらでサンプルも作成して動作確認できました。

    18
    hiroton 2023/06/07 (水) 10:48:07 修正 9c71f@f966d >> 16

    個人的にはレポートあまりごちゃごちゃさせたくないんでVBA優先しちゃいますけどね

    Option Compare Database
    Option Explicit
    
    'レポート上に「コントロールソース:=[pages]」のテキストボックスを配置すること
    
    Dim lastDay As Date
    Dim daySum As Currency
    Dim total As Currency
    
    Private Sub レポートフッター_Format(Cancel As Integer, FormatCount As Integer)
        total = total + daySum * 1.1
        Me!月合計 = total
    End Sub
    
    Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
        If Me.FormatCount = 1 Then
            If Me!日付 = lastDay Then
                daySum = daySum + Me!数
            Else
                total = total + daySum * 1.1
                daySum = Me!数
                lastDay = Me!日付
            End If
        End If
    End Sub
    

    んー、ここまでVBA任せにするとなんか難しそうに見えますね

    レポート上のコントロールのプロパティによって結果が変わるモノを使いたくない(プロパティ確認が手間)ってのもあるんですが、コントロールを使えばプレビューでイメージを掴みやすいってメリットも有難いところではあります

    この先は、慣れと雰囲気でお好きなものをって感じですかね