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

フォームからのデータ入力では、テーブル上で主キーや重複なしのインデックスに設定されているフィールドに対して、既存のレコードと同じデータを入力・保存しようとすると、次のような、Access既定の難解なメッセージが表示されてしまいます。

Access既定のエラーメッセージ


ここでは、データ更新前にキーの重複をチェックし、オリジナルの警告メッセージを表示する方法を紹介します。


実行画面例次の例では、「顧客コード」がテキスト型の主キーに設定されています。この入力欄にデータが入力された時点でその内容をチェックし、もし既存のレコードに同じキーのレコードがあったらメッセージを表示するようにしています。さらに、イベントプロシージャの引数「Cancel」を"True"に設定することによって、レコードの保存はもとより、他の入力欄へもフォーカス移動できないようになります。もちろん、Access既定のキー重複メッセージも表示されません。

■テキストボックスの更新前処理イベントプロシージャ
Private Sub 顧客コード_BeforeUpdate(Cancel As Integer)

  If DCount("顧客コード", "顧客マスタ", _
            "顧客コード='" & Me!顧客コード & "'") > 0 Then
    Beep
    MsgBox "既存のデータと同じ顧客コードが入力されました! " & _
            "別の値を入力してください。", _
            vbOKOnly + vbExclamation, "重複エラー"
    Cancel = True
  End If

End Sub

※ここでは、テーブル「顧客マスタ」上に、テキストボックスに入力された値と同じ「顧客コード」を持つレコードが何件あるかをDCount関数を使って調べています。もし、この数字がゼロなら、そのようなレコードはない、つまりキーが重複していないことになります。
| Index | Prev | Next |



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