Vba 防止有条件的数据重复

Vba 防止有条件的数据重复,vba,ms-access,Vba,Ms Access,我想在用于输入序列号的文本框上设置数据重复检查 如果在数据库中已找到输入的序列号,则在清除文本框中的值之前,应调用MsgBox提醒用户 但是,如果输入的序列号包含“RW”,则应禁用检查 Private Sub Serial_Number_AfterUpdate() Dim NewSerialNumber As String Dim stLinkCriteria As String NewSerialNumber = Me.Serial_Number.Value stLinkCriteria =

我想在用于输入序列号的文本框上设置数据重复检查

如果在数据库中已找到输入的序列号,则在清除文本框中的值之前,应调用MsgBox提醒用户

但是,如果输入的序列号包含“RW”,则应禁用检查

Private Sub Serial_Number_AfterUpdate()
Dim NewSerialNumber As String
Dim stLinkCriteria As String

NewSerialNumber = Me.Serial_Number.Value
stLinkCriteria = "[Serial_Number] = " & "'" & NewSerialNumber & "'"
If Me.Serial_Number = DLookup("[Serial_Number]", "Esagon_End", stLinkCriteria) Then
    MsgBox "This serial number, " & NewSerialNumber & ", has already been entered into the database." _
            & vbCr & vbCr & "Please check the serial number again.", vbI, "Duplicate information"
    Me.Undo
End If

End Sub

如果VBA不能做到这一点,我愿意使用其他方法,如查询。谢谢。

看看你问的问题,我想这就是你要找的。如果不是,请留下评论,我会尝试更新我的答案

Private Sub Serial_Number_AfterUpdate()

'If it doesn't contain "RW"
If InStr(Me.Serial_Number, "RW") = 0 Then
    'If serial number not in the database
    If DCount("*", "Esagon_End", "Serial_Number = '" & Me.Serial_Number & "'") > 0 Then
        'Alert user and blank the text box
        Call MsgBox("The serial number " & Me.Serial_Number & " is already in the database." _
                    & vbCrLf & vbCrLf & "Please check the serial number you are entering.", _
                    vbInformation, "Duplicate Serial")
        Me.Serial_Number = ""
    End If
End If

End Sub

“删除文本框中的序列号”和“数据复制将被禁用”在我看来是一样的。所以,试着重新表述这个问题。