私のフィールドの BeforeUpdate イベントでは、フィールド SurveyID での重複を禁止するように dcount を設定しています。これはうまく機能しますが、過去の記録でユーザーが誤って SurveyID の編集を開始し、キャンセルしようとした場合 (誤って SurveyID フィールドを選択し、入力を開始し、それを消去して SurveyID を入力した場合) を除きます。その SurveyID を (実際にはそうではありませんが) 重複として読み取り、ID を保持することを許可しません。この後、SurveyID をリセットすることで半分の回避策を既に実行しているため、上記のシナリオにある場合は、少なくとも ID を保持できます。私のコードでこれが起こらないようにする方法があるかどうか、私が本当に知りたいこと。2 つの異なる ID コードを使用できるため、SurveyId は主キーではありません。
これが私の現在のコードです
Private Sub SurveyID_BeforeUpdate(Cancel As Integer)
'checks for duplicates'
If DCount("SurveyID", "test", "SurveyID=" & Nz(Me.SurveyID, 0)) > 0 Then
Beep
MsgBox "The Survey ID number you have entered is a duplicate. Please double check that the number you entered is correct. If it is correct, please X."
Me.SurveyID.Undo
Cancel = True
End If
End Sub