【发布时间】: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/…
-
当电话号码已经存在时,使用记录集返回您感兴趣的字段