陷阱访问vba消息

时间:2016-12-11 14:08:35

标签: vba ms-access

我在进行其他工作一段时间之后在Access 2007中进行开发并尝试将消息捕获给用户。表单中的一个函数修改表中的行。代码的相关位是

On Error GoTo PROC_ERR
...
DoCmd.RunSQL szSQL
...
PROC_ERR:
  MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical

SQL语句是正确的,系统会弹出一个"您即将更新1行..."消息(编号10505)。我想陷阱,并用我自己的警告信息替换它。但是,我的函数不会在此消息上捕获错误。如果用户单击" no":"运行时错误2501. RunSQL操作已取消。"

在VBA选项中我暂时将错误陷阱设置为"打破所有错误"。

我在这里缺少什么?我是否未在Access中设置其他选项?

2 个答案:

答案 0 :(得分:1)

我建议不要使用RunSQL。它需要DoCmd.SetWarnings False,这可能会影响进一步的警告,如果它不会被DoCmd.SetWarnings True后跟,例如错误之后。此外,您还无法读取受影响行的数量。 使用

db.Execute szSQL, dbFailOnError
相反,它将允许在查询执行后捕获错误并分析数据库状态。如果没有dbFailOnError选项,则不会引发错误。

答案 1 :(得分:0)

该消息不是错误。

你可以用

沉默它
 DoCmd.SetWarnings False

请记得再次设置它们。