DoCmd.SetWarnings 和 CurrentDB.Execute 有啥区别
Posted
技术标签:
【中文标题】DoCmd.SetWarnings 和 CurrentDB.Execute 有啥区别【英文标题】:What's the difference between DoCmd.SetWarnings and CurrentDB.ExecuteDoCmd.SetWarnings 和 CurrentDB.Execute 有什么区别 【发布时间】:2012-06-28 03:47:37 【问题描述】:在this answer 的 cmets 中,Remou 写道
CurrentDB.Execute "insert sql here"
优于
DoCmd.SetWarnings = 0
DoCmd.RunSQL "insert sql here"
由于 Access 产生的内置警告。我正在尝试了解其中的区别。
如果它们都掩盖了错误,为什么第一个比第二个更可取?这里有什么最佳做法吗?
【问题讨论】:
【参考方案1】:它们不会同时掩盖错误。 DoCmd.SetWarnings 掩盖错误并且是系统范围的,不限于您正在使用的单个应用程序。 DoCmd.SetWarnings False
没有相应的DoCmd.SetWarnings True
将意味着操作查询将在 PC 上的任何 Access 应用程序中运行而没有任何提示。
Execute 确实会抛出警告,即您需要的警告,例如查询未能执行,但不会给出您可能不需要的警告,例如“您确定要运行此查询吗”。
In this threadAccess MVP Allen Browne 说他不使用设置警告。
顺便说一句,我通常建议使用 CurrentDB 的实例,因为这将允许您返回记录计数等,所以:
Set db = CurrentDB
db.Execute sSQL, dbFailOnError
【讨论】:
来自您的评论:To run without the built-in warnings, use an instance of CurrentDB and Exceute the SQL string
这让我相信.Execute
不会发出警告?
说得越多越好。很难让人们了解 SetWarnings 的致命性。以上是关于DoCmd.SetWarnings 和 CurrentDB.Execute 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章
控制台打印出event对象时,对象里面的currentTarget为null