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