在对此答案的评论中,Remou 写道
CurrentDB.Execute "insert sql here"
好于
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
由于 Access 产生的内置警告。我试图理解其中的区别。
如果它们都掩盖了错误,为什么第一个比第二个更可取?这里有什么最佳实践吗?
在对此答案的评论中,Remou 写道
CurrentDB.Execute "insert sql here"
好于
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
由于 Access 产生的内置警告。我试图理解其中的区别。
如果它们都掩盖了错误,为什么第一个比第二个更可取?这里有什么最佳实践吗?
它们不会同时掩盖错误。DoCmd.SetWarnings 掩盖错误并且是系统范围的,不限于您正在使用的单个应用程序。DoCmd.SetWarnings False
没有相应的 DoCmd.SetWarnings True
将意味着操作查询将在 PC 上的任何 Access 应用程序中运行而没有任何提示。
Execute 确实会抛出警告,即您需要的警告,例如查询未能执行,但不会给出您可能不需要的警告,例如“您确定要运行此查询吗”。
在这个线程中,Access MVP Allen Browne 说他不使用设置警告。
顺便说一句,我通常建议使用 CurrentDB 的实例,因为这将允许您返回记录计数,除其他外,因此:
Set db = CurrentDB
db.Execute sSQL, dbFailOnError