#161 | データ更新前にキーの重複をチェックする方法 | フォーム、VBA | |
フォームからのデータ入力では、テーブル上で主キーや重複なしのインデックスに設定されているフィールドに対して、既存のレコードと同じデータを入力・保存しようとすると、次のような、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関数を使って調べています。もし、この数字がゼロなら、そのようなレコードはない、つまりキーが重複していないことになります。 |
|||
|
Copyright © T'sWare All rights reserved |