【发布时间】:2018-12-25 20:54:36
【问题描述】:
我不确定是否还有这样的帖子,但我认为我的问题有点不同。
我目前正在设计一个数据库来跟踪雇主提供的员工培训。我发现当前的错误是使用绑定表单 (frmAddEmployee) 将员工添加到员工表 (tblEmployees)。
我目前的工作是 VBA 代码,当您在员工编号的文本框中输入值并在表中找到重复记录时,它会显示通知。 VBA 还将以与您在清除通知时输入的值对应的相同形式显示记录。
这是我在更新后用于 txtEmpNumber 的代码:
Private Sub txtEmpNumber_AfterUpdate()
Dim EmpNum As String
Dim stLinkCriteria As String
Dim EmpNr As Integer
'Assign the entered employee number to a variable
EmpNum = Me.txtEmpNumber.Value
stLinkCriteria = "[EmpNumber] = " & "'" & EmpNum & "'"
If Me.txtEmpNumber = DLookup("[EmpNumber]", "tblEmployees", stLinkCriteria) Then
MsgBox "This employee number, " & EmpNum & ", has already been entered in database." _
& vbCr & vbCr & "Please check the number.", vbExclamation, "Duplicate information"
Me.Undo
'show the record of matched employee number from the employees table
EmpNr = DLookup("[EmpID]", "tblEmployees", stLinkCriteria)
Me.DataEntry = False
DoCmd.FindRecord EmpNum, , , , , acCurrent
Me.cmdSave.Enabled = False
Me.cmdNew.Enabled = True
Else
Me.txtIDNumber.Enabled = True
End If
End Sub
通知显示存在重复值,例如 1234,并在表中显示 1234 的记录,但当我尝试不同的值(如 5678)时,它再次显示 1234 的值而不是 5678。
任何想法如何解决这个问题?
【问题讨论】:
-
这可能不是问题,但我注意到在
Me.Undo之后,您查找Id、EmpNr,然后使用FindRecord搜索EmpNum。也许您打算将FindRecord与EmpNr一起使用? -
或者,当你说“它再次显示值”时,你是在说弹出通知,还是在表中搜索匹配记录?
-
能否发个数据库的例子给你看看?
-
@AnnL。是的,它的匹配记录
-
使用更新前事件来验证输入。