#593 | 主キー重複時にオリジナルのメッセージを出す方法 | フォーム、VBA | |
入力されたレコードの「主キー」もしくは「重複なしインデックス」フィールドの値が他のレコードと重複している場合、レコードを保存しようとしたとき、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 実行例: |
|||
|
Copyright © T'sWare All rights reserved |