【问题标题】:Access VBA - Input Form Detect Duplicate and then Display Duplicate Record访问 VBA - 输入表单检测重复然后显示重复记录
【发布时间】:2017-03-10 04:35:54
【问题描述】:

我有什么

我有一个 Access 输入表单,用户在表单中填写数据,按下触发 VBA 脚本的按钮,该脚本检查 [Telephone] 控件中输入的电话号码是否与表中的条目匹配。如果有重复,它会触发一个 MsgBox,如果没有,它会将数据提交到表中。这很有效,而且很棒。这是脚本:

Option Compare Database

Private Sub buttonNewRecord_Click()

Dim ErrorInt As Integer
Dim TeleCheck As Variant

TeleCheck = DLookup("[Telephone]", "tblLog", "[Telephone] = '" & Me.Telephone & "'")
If Not IsNull(TeleCheck) Then
MsgBox "Telephone number already exists in the database!"
ErrorInt = ErrorInt + 1
End If

If ErrorInt < 1 Then
DoCmd.GoToRecord , , acNewRec
MsgBox "Record Added!"
End If

End Sub

我想做的事

在表格中,除了 [Telephone] 之外,还有 [Date] 和 [Customer_Name] 字段。当检测到重复的电话号码时,我希望触发的 MsgBox 显示找到重复的记录的 [Date] 和 [Customer_Name]。喜欢:

MsgBox "Telephone number already exists for [Customer_Name] added on [Date]!"

我的尝试

不是很多,因为我不确定要尝试什么。谷歌搜索提供了许多不同的方法来检测重复,但我发现没有人试图从找到的重复记录中返回任何数据。

【问题讨论】:

  • 为什么不在表中为该字段添加唯一约束?这将防止重复,而无需明确检查。您可以在尝试添加重复项时捕获错误,并仅显示一个消息框。
  • 因为我发现捕获错误比它的价值要麻烦得多。我在 VBA 中还有其他错误处理和约束,我没有在此处列出,因为它们与问题无关。
  • 怎么样?它应该抛出一个非常具体的错误号。
  • 对不起,但这与问题无关...我检测错误没有问题,问题是在错误消息中包含有关重复记录的附加信息。如果你真的想知道,你可以阅读我写的关于它的线程。 stackoverflow.com/questions/42220010/…
  • 当电话号码已经存在时,使用记录集返回您感兴趣的字段

标签: vba ms-access


【解决方案1】:
Dim cstmerName as String
Dim dateAdded as String

Let cstmerName = DLookup("[Customer_Name]", "tblLog", "[Telephone] = '" & Me.Telephone & "'")
Let dateAdded = CStr(DLookup("[Date]", "tblLog", "[Telephone] = '" & Me.Telephone & "'"))

MsgBox "Telephone number already exists for " & cstmerName & " added on " & dateAdded & "!"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-01
    • 2017-04-04
    • 2018-12-27
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多