在插入之前检查列中的值,如果存在则移至Access表单中的下一个字段?

时间:2019-05-16 18:18:08

标签: vba ms-access

我在输入掩码中使用了“ E” 0000000000a; 0;#,并包含此代码来检查employeeCode在更新之前是否已存在。 但是,当我尝试输入重复的员工代码时。它允许。 有想法吗?

Private Sub Empl_Code_BeforeUpdate(Cancel As Integer)
   If IsNull(DLookup("[EmplCode]", _
   "FORM EMPLOYEE", _
   "[EmplCode] = """ & Me.Empl_Code.Text & """")) = False Then
      Cancel = True
      MsgBox "Record already exists", vbOKOnly, "Warning" 
      Me![Empl Code].Undo
   End If
End Sub

1 个答案:

答案 0 :(得分:0)

您的代码看起来合法。 当您尝试输入重复的代码时,请在“即时”窗口(VBA编辑器中的“查看-即时”窗口)中测试您的 IsNull(DLookup ... 表达式)。 同样,您也可以使用DCount缩短表达式:

Private Sub Empl_Code_BeforeUpdate(Cancel As Integer)
   If DCount("*", _
   "FORM EMPLOYEE", _
   "[EmplCode] = """ & Me.Empl_Code.Text & """") > 0 Then
      Cancel = True
      MsgBox "Record already exists", vbOKOnly, "Warning" 
      Me![Empl Code].Undo
   else
      ' Just for test
      MsgBox "Value: " & Me.Empl_Code.Text
   End If
End Sub