DoCmd.SetWarnings和CurrentDB.Execute之间有什么区别?
在这个答案的评论中,雷穆写道
CurrentDB.Execute "insert sql here"
比…更好
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
由于Access产生的内置警告。 我试图了解其中的差异。
如果他们都掩盖了错误,为什么第一个比第二个好? 这里有最佳做法吗?
他们不掩盖错误。 DoCmd.SetWarnings掩盖错误,并且是系统范围的,不限于您正在使用的单个应用程序。 DoCmd.SetWarnings False
没有相应的DoCmd.SetWarnings True
将意味着动作查询将在PC上的任何Access应用程序中没有任何提示的情况下运行。
执行不会抛出警告,您需要的警告,如查询失败,但不会给出您可能不需要的警告,如“您确定要运行此查询”。
在这个线程中 ,Access MVP的Allen Browne说他没有使用Set Warnings。
顺便说一下,我通常会推荐使用CurrentDB的一个实例,因为这将允许您返回一个logging计数,其中包括:
Set db = CurrentDB db.Execute sSQL, dbFailOnError