我在进行其他工作一段时间之后在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中设置其他选项?
答案 0 :(得分:1)
我建议不要使用RunSQL
。它需要DoCmd.SetWarnings False
,这可能会影响进一步的警告,如果它不会被DoCmd.SetWarnings True
后跟,例如错误之后。此外,您还无法读取受影响行的数量。
使用
db.Execute szSQL, dbFailOnError
相反,它将允许在查询执行后捕获错误并分析数据库状态。如果没有dbFailOnError
选项,则不会引发错误。
答案 1 :(得分:0)
该消息不是错误。
你可以用
沉默它 DoCmd.SetWarnings False
请记得再次设置它们。