#593 主キー重複時にオリジナルのメッセージを出す方法 フォーム、VBA

入力されたレコードの「主キー」もしくは「重複なしインデックス」フィールドの値が他のレコードと重複している場合、レコードを保存しようとしたとき、Access既定のメッセージとして次のようなダイアログが表示されます。
Access既定のメッセージ
このメッセージによって重複したレコードの保存は回避できますが、ちょっと分かりづらいメッセージとなっています。

このようなとき、ひとつの方法として、テキストボックスやコンボボックス等の更新前処理イベントで他の同じデータがないか調べることもできますが(参考Tips:「#161 データ更新前にキーの重複をチェックする方法」)、複数フィールドで主キーが設定してある場合など、それらを組み合わせたチェック処理は少々面倒です。

そこで、フォームの「エラー時/Error」イベントを使うことで、レコード単位で一括してチェックをかけることができます。

それには、「エラー時/Error」イベントプロシージャに次のようなコードを記述します。この方法では、個別のフィールドではなく、1レコード全体が保存されようとしたときにチェックがかけられます(正確には、事前にチェックするのではなく、保存時にエラーが発生するので、それをとらえて処理することになります)。

Private Sub Form_Error(DataErr As Integer, Response As Integer)
'フォームのエラー時

  If DataErr = 3022 Then
    Response = acDataErrContinue
    MsgBox "キーとなるデータが重複しています!", vbOKOnly + vbExclamation
  End If

End Sub


実行例:
実行例
| Index | Prev | Next |



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