14

对此答案的评论中,Remou 写道

CurrentDB.Execute "insert sql here"

好于

DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"

由于 Access 产生的内置警告。我试图理解其中的区别。

如果它们都掩盖了错误,为什么第一个比第二个更可取?这里有什么最佳实践吗?

4

1 回答 1

19

它们不会同时掩盖错误。DoCmd.SetWarnings 掩盖错误并且是系统范围的,不限于您正在使用的单个应用程序。DoCmd.SetWarnings False没有相应的 DoCmd.SetWarnings True将意味着操作查询将在 PC 上的任何 Access 应用程序中运行而没有任何提示。

Execute 确实会抛出警告,即您需要的警告,例如查询未能执行,但不会给出您可能不需要的警告,例如“您确定要运行此查询吗”。

在这个线程中,Access MVP Allen Browne 说他不使用设置警告。

顺便说一句,我通常建议使用 CurrentDB 的实例,因为这将允许您返回记录计数,除其他外,因此:

Set db = CurrentDB
db.Execute sSQL, dbFailOnError
于 2012-06-26T18:41:44.077 回答