【发布时间】:2016-12-28 08:11:06
【问题描述】:
我查看了以下问题,这正是我想要做的,但是发布的答案似乎对我不起作用。我的查询基本相同,但我会详细说明。
我有一个表格,它使用以下内容更新信息表:
Forename
Surname
EmailAddress
数据库还通过=Date()在字段的默认值设置中自动添加了DateEntered,并且有一个主键自动编号叫CPDEAID。
我在表单中添加了以下代码。
Private Sub Form_BeforeUpdate(Cancel As Integer)
Set rst = Me.RecordsetClone
rst.FindFirst "[CPDEAID] <> " & Me.CPDEAID & " AND [Forename] = " & Me.Forename & " AND [Surname] = " & Me.Surname & " AND [EmailAddress] = " & Me.EmailAddress
If Not rst.NoMatch Then
Cancel = True
If MsgBox("This person already exists; would you like to go to the existing record?", vbYesNo) = vbYes Then
Me.Undo
DoCmd.SearchForRecord , , acFirst, "[CPDEAID] = " & rst("CPDEAID")
End If
End If
rst.Close
End Sub
但是,这似乎不起作用。我可以让我的数据库不创建重复记录的唯一方法是创建一个多列索引 - 但这有点混乱,因为我想要一个干净的“用户友好”前端。
我在这里遗漏了一些非常简单的东西吗?
Prevent Duplicate Records, Query Before Creating New Records
【问题讨论】:
-
我不确定你所说的多列索引是什么意思,使它有点凌乱并且不干净的“用户友好”前端?它是否会导致您不希望用户看到的弹出警告?
-
添加字段为主键或设置多列索引。要么捕获即将添加重复项时产生的错误号,要么执行
DCount之类的操作来确定存在多少条记录,当它大于 0 时,显示消息。
标签: vba ms-access duplicates