【问题标题】:Capture Action Query Warnings in vba (MS Access)在 vba (MS Access) 中捕获操作查询警告
【发布时间】:2017-07-03 03:00:27
【问题描述】:

有没有办法从在 MS Access 中运行操作查询时弹出的“警告”中捕获(通过 vba)信息?

如:运行更新查询时,我想捕获要更新的记录数,并将其与代码中的另一个变量进行比较。

如果可能的话,我希望将警告设置为关闭!我想我正在寻找是否有任何方法可以自定义操作查询警告。提前非常感谢!

【问题讨论】:

标签: vba ms-access


【解决方案1】:

使用 ADO 的 Execute 方法(参见答案@Michael Z.)或 DAO:

Dim db As DAO.Database

Set db = CurrentDb
db.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable", dbFailOnError
MsgBox db.RecordsAffected

Querydefs 也有RecordsAffected 属性。避免使用DoCmd.RunSQL 命令。

【讨论】:

  • 为什么要避免使用 DoCmd.RunSQL 命令?感谢您的反馈
  • 因为您需要禁止显示错误消息并且无权访问 RecordsAffected 属性。错误抑制会影响整个应用程序,如果您由于例如错误而无法重新启用它,甚至表单/报告/查询构建器也不会询问您是否保存
【解决方案2】:

相信你在找DoCmd.SetWarnings False

https://msdn.microsoft.com/VBA/Access-VBA/articles/docmd-setwarnings-method-access

要获取受影响的行,您必须像这样运行查询。

Dim recordsAffected As Long
cn.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable", _
           recordsAffected
MsgBox recordsAffected

【讨论】:

  • 还需要声明设置cn对象变量吗?
  • 是的,但我认为 OP 应该已经有了。稍后我会更新答案。
猜你喜欢
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-28
  • 1970-01-01
  • 2018-06-14
相关资源
最近更新 更多