Ms access 使用预定义选项抑制标准错误消息

Ms access 使用预定义选项抑制标准错误消息,ms-access,vba,Ms Access,Vba,我在MS Access中构建了一个表单,用于为数据库创建数据集。 然后,我实现了一些代码,以检查在允许关闭表单和将数据集保存到数据库之前是否已填写了所有必需的字段 一切正常,但我似乎无法抑制Access创建的标准错误消息,该消息告诉我当前无法保存数据集(如果未填写必填字段且Cancel设置为true),如果我想退出表单而不保存,则单击我 我的代码结构如下: Private Sub Form_BeforeUpdate(Cancel As Integer) If requiredField

我在MS Access中构建了一个表单,用于为数据库创建数据集。 然后,我实现了一些代码,以检查在允许关闭表单和将数据集保存到数据库之前是否已填写了所有必需的字段

一切正常,但我似乎无法抑制Access创建的标准错误消息,该消息告诉我当前无法保存数据集(如果未填写必填字段且
Cancel
设置为true),如果我想退出表单而不保存,则单击我

我的代码结构如下:

Private Sub Form_BeforeUpdate(Cancel As Integer)
     If requiredFieldsNotFilled Then
           Cancel = True
     Else
           Cancel = False
     End If
End Sub
Cancel
设置为true(即所需字段尚未全部填充)时,Access会抛出一条标准错误消息(错误代码2169),我正试图将其抑制为:

Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If DataErr = 2169 Then 
        Response = acDataErrContinue
      Else
        Response = acDataErrDisplay
    End If
End Sub
但是,生成的错误消息提供了是/否选项。”“是”表示关闭数据集而不保存,“否”表示不关闭数据集。 如果我如上所述使用错误处理程序,则默认选择为“是”,并且数据集在不保存的情况下关闭! 这不是我想要的!我希望选择“否”,这样用户就可以留在表单上并更正其输入。。。有什么办法吗?
非常感谢您的帮助!提前谢谢

我认为此类功能不可用,但您可以使用
Form_Unload
事件手动停止下一个关闭操作:

Dim DontClose As Boolean
Private Sub Form_Error(DataErr As Integer, Response As Integer)
    If DataErr = 2169 Then 
        Response = acDataErrContinue
        DontClose = True
      Else
        Response = acDataErrDisplay
    End If
End Sub

Private Sub Form_Unload(Cancel As Integer)
     Cancel = DontClose
     DontClose = False
End Sub

谢谢你的建议,埃里克!只要正确处理对话,这就已经起作用了。不幸的是,表单中所有已输入的值都已重置。。。你知道怎么防止吗!