Microsoft Access 掲示板

サブフォームの値をすぐに計算など / 3

11 コメント
views
4 フォロー
3

改善したいことはサブに金額入力したらすぐにサブフッターのテキストボックスに反映したい

Accessの仕様としては、F2、F4に金額を入力しただけではフッターの集計には反映されません。
レコード移動するとか、[Shift]+[Enter]キーを押す、レコードセレクタをクリック、・・・などなど
のレコード保存アクションを起こすと反映されます。

このレコード保存アクションを起こす前に、テキストボックスで金額を入力した直後に反映させたいなら、下記のリンク先の方法を参考にしてください。

フォームでの集計をレコード保存する前に反映させる - hatena chips

ただ、通常はそこまでしなくてもいいように思います。

合計値が合致していない状態でフォームを閉じたりメインに配置してます移動ボタン(新規レコード含む)で移動できない様に入力チェックが出来ないかなと思いまして。

サブフォームコントロールのフォーカス喪失時のイベントで合計値をチェックして合致していなかったら、イベントをキャンセルすればいいでしょう。
あとフォームの読み込み解除時でもチェックする必要があります。

サブフォームコントロール名(サブフォームを埋め込んでいるコントロールの名前)を「埋め込み1」、
サブフォームのフッターの集計テキストボックスの名前を SumF2, SumF4 と仮定した場合のサンプルコードです。
メインフォームのモジュールに記述します。

Private Sub Form_Unload(Cancel As Integer)
    If Me.埋め込み1.Form!SumF2.Value <> Me.埋め込み1.Form!SumF4.Value Then
        Cancel = True
        Me.埋め込み1.Form!SumF2.SetFocus
    End If
End Sub

Private Sub 埋め込み1_Exit(Cancel As Integer)
    Me.埋め込み1.Form.Requery 'レコード保存
    If Me.埋め込み1.Form!SumF2.Value <> Me.埋め込み1.Form!SumF4.Value Then
        Cancel = True
        MsgBox "F2とF4の合計が合っていません!"
    End If
End Sub

サブフォームコントロール名の確認法は下記を参考に。

サブフォームとサブフォームコントロールの違いとは? - hatena chips

通報 ...