Ms access 访问VBA:如何按OK?

Ms access 访问VBA:如何按OK?,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我有以下代码: Private Sub _Click() DoCmd.OpenQuery "queryA", acViewNormal, acEdit DoCmd.OpenQuery "queryB", acViewNormal, acEdit DoCmd.OpenQuery "queryC", acViewNormal, acEdit DoCmd.Close acForm, "formA", acSaveNo End Sub 当我执行它时,会出现很多消息框。 是否有一个命令可以为每个消息框按

我有以下代码:

Private Sub _Click()
DoCmd.OpenQuery "queryA", acViewNormal, acEdit
DoCmd.OpenQuery "queryB", acViewNormal, acEdit
DoCmd.OpenQuery "queryC", acViewNormal, acEdit
DoCmd.Close acForm, "formA", acSaveNo
End Sub
当我执行它时,会出现很多消息框。
是否有一个命令可以为每个消息框按OK?

有几种解决方案

第一个-使用
SetWarnings

OpenQuery
s之前,插入以下行:

DoCmd.SetWarnings False
DoCmd.SetWarnings True
OpenQuery
s之后,插入以下行:

DoCmd.SetWarnings False
DoCmd.SetWarnings True
这将阻止大多数警告和确认消息出现

第二个选项-将
DoCmd.OpenQuery
替换为
Database.Execute

CurrentDB.Execute "queryA"
CurrentDB.Execute "queryB"
CurrentDB.Execute "queryC"
这将在没有确认的情况下执行操作查询。它还有一个额外的优点:如果您添加
dbFailOnError
常量作为第二个参数,那么如果查询的任何部分没有执行它应该执行的操作,您可以让VBA抛出一个错误—OpenQuery会忽略这种情况。例如,如果您正在运行一个
Update
查询,并且由于不兼容的数据类型而对一个字段进行了多次更改,包括无效的更改,
OpenQuery
可能会导致更新不一致,而
Execute
则会导致错误且没有更改:

CurrentDB.Execute "queryA", dbFailOnError

没有简单的方法可以在所有消息上“按OK”,但您可以完全阻止它们出现。

消息框怎么说?没有通用的“命令”可以在每个消息框中按OK。就定制方式而言,这是可能的,但您还没有提供任何关于消息框的信息,让我们告诉您如何操作。“出现了很多消息框”并不是一个足够具体的问题描述,因此不太有用。@etamar211:回答得好,但只是一个警告。将错误处理程序编码到子系统中,并确保无论发生什么情况,在退出之前都运行DoCmd.SetWarnings True,即使出现错误。这是一个应用程序范围的设置,并且没有错误处理程序,如果代码主体中发生了某些事情并且没有运行,那么除非再次手动运行SetWarnings,否则您永远不会收到这些消息框。