DoCmd.SetWarnings和CurrentDB.Execute之间有什么区别

时间:2012-06-26 18:38:19

标签: sql vba ms-access error-handling access-vba

this answer的评论中,Remou写道

CurrentDB.Execute "insert sql here"

优于

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

由于Access产生的内置警告。我试图了解其中的差异。

如果它们都掩盖了错误,为什么第一个优先于第二个呢?这里有最好的做法吗?

1 个答案:

答案 0 :(得分:18)

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

执行会抛出警告,您需要的警告,例如查询无法执行,但不会发出您可能不需要的警告,例如“您确定要运行此查询”。

In this thread访问MVP的Allen Browne表示他不使用Set Warnings。

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

DoCmd.SetWarnings True