首页 > 解决方案 > 在插入之前检查列的值,如果存在移动到 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

标签: vbams-access

解决方案


您的代码看起来合法。当您尝试输入重复代码时,在即时窗口(查看 - 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

推荐阅读