#258 データ更新前にキーの重複をチェックする方法(その2) フォーム、VBA

主キーや重複なしのインデックスの設定されたフィールドに対して、他のレコードと重複する値を入力すると、次のようなAccess固有のメッセージが表示されます。
キー重複のメッセージ

このAccessが自動的に発してくる、親切なようで意味不明なメッセージの代わりに、オリジナルのメッセージを表示する方法については「#161 データ更新前にキーの重複をチェックする方法」で説明しています。

ここではその補足として、新規レコードではなく既存のレコードに対して、たまたますでに入力されているのと同じ値を同じ欄に再入力した場合にはオリジナルメッセージを表示しないようにする方法を紹介します。

ポイントは、テキストボックスの「OldValue」プロパティ値を調べて、もし再入力された値がそれと同じであれば、重複をチェックしないようにするという点です。「OldValue」プロパティを調べることによって、更新前の値を取得することができます。
Private Sub 顧客コード_BeforeUpdate(Cancel As Integer)

  With Me!顧客コード
    If IsNull(.OldValue) Or (.Value <> .OldValue) Then
      If DCount("顧客コード", "tbl顧客マスタ", "顧客コード=" & .Value) > 0 Then
        Beep
        MsgBox "入力された顧客コードはすでに使われています!" & _
                vbCrLf & _
                "他の値を再入力してください。", vbOKOnly + vbExclamation
        Cancel = True
      End If
    End If
  End With
  
End Sub
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved