0

在我的字段的更新前事件中,我设置了一个 dcount 以禁止字段 SurveyID 中的重复项。这很好用,除非在过去的记录中,用户意外开始编辑他们的 SurveyID 并尝试取消(意外选择了 SurveyID 字段,开始输入,然后删除它并输入 SurveyID)。它将 SurveyID 读取为重复项(即使它不是真的),并且不允许他们保留该 ID。我已经通过在此之后重置 SurveyID 完成了一半的解决方法,所以如果他们处于上述情况,他们至少可以保留他们的 ID。我真的想知道我的代码是否有办法防止这种情况发生。SurveyId 不是主键,因为它们可以使用两个不同的 ID 代码。

这是我当前的代码

Private Sub SurveyID_BeforeUpdate(Cancel As Integer)
'checks for duplicates'
If DCount("SurveyID", "test", "SurveyID=" & Nz(Me.SurveyID, 0)) > 0 Then
    Beep
    MsgBox "The Survey ID number you have entered is a duplicate. Please double check that the number you entered is correct. If it is correct, please X."
    Me.SurveyID.Undo
    Cancel = True
End If
End Sub
4

2 回答 2

0

您是否尝试将 SurveyID 设置为是(无重复)索引?只要Required 也设置为No,它就不允许您输入重复值,但如果您愿意,也可以将其留空。

您应该仍然能够在表单的 On Error 事件中捕获错误,以便显示友好的消息。

于 2016-01-30T04:32:08.227 回答
-1

这就是为什么有一个绑定的形式是一个坏主意。永远不要将表单绑定到表格。撤消一个条目充其量是不可靠的,绑定表单的工作方式是,一旦您更改字段,记录就会写入表中。是的,有一个撤消命令,但它不可靠。

将表格与表单解除绑定,并编写代码来更新记录(如果它已经存在)或在您按下“提交”按钮时写入新记录。它需要更多的编码并且需要更好地理解 Access,但这是执行此操作的正确方法。

于 2016-01-29T18:16:39.353 回答