获取Access追加查询警告的错误编号,解决Err.Number返回0的问题
解决Access追加查询错误编号获取及提示问题
一、为什么弹出“Error 0:”
你的错误处理代码弹出Error 0:,是因为错误没有被正确捕获,常见原因有两个:
- 代码开头未添加
On Error GoTo ErrorHandler语句,导致错误发生时不会跳转到ErrorHandler标签执行处理逻辑 - 错误触发后,Err对象的属性被意外重置(比如在错误发生到进入处理代码之间,执行了会清除Err状态的操作)
二、获取“无法追加追加查询中的所有记录”的错误编号
这个警告对应的典型错误编号是3022,一般是因为要追加的记录违反了表的约束规则(比如主键重复、唯一字段重复)。
如果想确认具体编号,可以用这段代码手动捕获:
On Error Resume Next ' 执行会触发该错误的追加查询操作 If Err.Number <> 0 Then MsgBox "错误编号:" & Err.Number & vbCrLf & "描述:" & Err.Description Err.Clear End If On Error GoTo 0
运行代码触发错误后,就能看到准确的错误编号。
三、修改后的针对性错误处理代码
先在代码开头加上错误捕获语句,再调整处理逻辑:
On Error GoTo ErrorHandler ' 你的主业务代码(执行追加查询的逻辑) Exit Sub ' 正常流程退出,避免进入错误处理块 ErrorHandler: If Err.Number = 3022 Then MsgBox Me.CoNmtxt & "/" & Me.FrnNmtxt & "/" & Me.DptNmtxt & vbCrLf & _ "该记录已存在" & vbCrLf & _ "请使用【董事编辑表单】来录入或修改" & vbCrLf & _ "董事姓名和邮箱", vbInformation, "⚠️ 新增董事错误 ⚠️" Else MsgBox "发生错误:" & vbCrLf & "错误 " & Err.Number & ": " & Err.Description End If Err.Clear ' 清除错误状态 Resume Next ' 可根据需求替换为Resume回到错误行,或直接结束
内容的提问来源于stack exchange,提问作者Mikel
相关产品推荐
相关产品推荐

