为什么我的DLOOKUP只返回部分正确的记录?

时间:2015-10-03 12:56:49

标签: vba ms-access access-vba filtered-lookup

好的。这是我的第一篇文章,所以我会尽量详细说明。我在一个名为frm_Contact_Info的Form上有一个Person_AfterUpdate()事件,它应该检查一个名为" tbl_Contact_Info,"的表。对于现有记录。如果记录存在,则会弹出一条消息,指出记录已存在,并检查名称。然后它会询问我是否使用现有名称创建新记录,或者返回的记录是否是同一个人。我遇到的问题是DLookup显示正确的名称,但没有将正确的电话号码或地址返回到我的表单。

这是我的代码。我不擅长编程,但我尽量让它变得可以理解。如果你想要截屏,请告诉我。这是我第一次真正尝试建立数据库,而且我知道我的技能并不像你的一些人那么好。我尽可能多地尝试研究找到答案,但到目前为止我所做的一切都让我回到了这个问题,即DLOOKUP正在返回正确的NewPerson,但不是正确的手机号码或电子邮件地址。请帮忙!

Private Sub Person_AfterUpdate()

Dim NewPerson As String
Dim stLinkCriteria As String
Dim PersID As Integer

On Error GoTo E:

NewPerson = Me.Person.Value
stLinkCriteria = "[Person] = " & "'" & NewPerson & "'"

If Me.Person = DLookup("[Person]", "tbl_Contact_Info", stLinkCriteria) Then
    MsgBox "The name, " & NewPerson & ", has already been added to the database." _
    & vbCr & vbCr & "Please check the name and try again.", vbInformation, "Duplicate Information"
    Me.Undo
End If

PersID = DLookup("[ID]", "tbl_Contact_Info", stLinkCriteria)
Me.DataEntry = False
DoCmd.FindRecord PersID, , , , , acCurrent

Response = MsgBox("Are you adding a new record with the same name?", vbYesNo, "New or Existing Record")

If Response = vbYes Then
    DoCmd.GoToRecord , "", acNewRec, 1
    Me!Person.Value = NewPerson
Else
    Me.DataEntry = True
    DoCmd.GoToRecord , "", acNewRec, 1

End If
Exit Sub

E:
Me!Person.Value = NewPerson
End Sub`

1 个答案:

答案 0 :(得分:0)

也许您在用作查找值的属性中有多个具有相同值的记录?