Microsoft Access 掲示板

フォームでの入力規制 / 6

10 コメント
views
4 フォロー
6
hiroton 2023/06/09 (金) 17:01:22 b43ba@f966d

VBAでやるなら更新前処理でチェックすればいいでしょう

キャンセルが理想的

入力内容はなかったことにして元に戻すならMe.Undoが使えます

Private Sub 商品ID_BeforeUpdate(Cancel As Integer)
    '//最初の登録の時は何もしない
    If Me.Recordset.RecordCount <= 1 Then Exit Sub
    
    Dim 区分け As String
    区分け = DLookup("区分け", "商品テーブル", "商品ID=" & DLookup("商品ID", "取引明細テーブル", "取引ID=" & Me!取引ID & " AND 明細ID <> " & Me!明細ID))

    If Me!商品ID.Column(2) <> 区分け Then
        Me.Undo
        MsgBox "区分けエラー"
    End If
End Sub

入力規則のように入力内容をチェックする必要はないので「区分け」の比較だけでいいですね。入力中のデータの方はコンボボックスのデータに「区分け」も含めるようにしておけば簡単に指定できます

通報 ...