Access零件位置数据库必填字段校验异常问题求助
问题分析与解决方案
你的代码存在三个核心问题:
- 校验失败后未终止流程:跳转到错误提示标签后未执行
Exit Sub,程序会继续执行后续添加新记录的代码,导致不完整数据被写入表中 - 错误处理逻辑混乱:
On Error Resume Next会屏蔽错误,且MacroError是宏对象的错误属性,VBA中应使用标准的Err对象 - 表单状态未重置:校验失败后未将表单恢复到可编辑的原有状态,导致无法修改字段
修改后的完整代码
Private Sub cmdAddNew_Click() ' 校验所有必填字段 If IsNull(Me.JobNumber) Or IsNull(Me.PartNumber) Or IsNull(Me.Location) Then MsgBox "Job Number、Part Number和Location为必填字段,请完善后再添加。", vbExclamation, "必填字段缺失" ' 将焦点定位到第一个空字段,方便用户修改 If IsNull(Me.JobNumber) Then Me.JobNumber.SetFocus ElseIf IsNull(Me.PartNumber) Then Me.PartNumber.SetFocus Else Me.Location.SetFocus End If Exit Sub ' 终止流程,不执行后续添加操作 End If ' 校验通过后执行添加新记录操作 On Error GoTo cmdAddNew_Click_Err DoCmd.GoToRecord , "", acNewRec cmdAddNew_Click_Exit: Exit Sub cmdAddNew_Click_Err: MsgBox "添加新记录时出错:" & Err.Description, vbCritical, "错误" Resume cmdAddNew_Click_Exit End Sub
关键修改说明
- 简化校验逻辑:用
Or合并三个空值判断,代码更简洁易读 - 校验失败立即终止流程:添加
Exit Sub,确保校验不通过时不会执行添加新记录的代码 - 定位焦点到空字段:帮助用户快速找到需要修改的位置,提升操作效率
- 修正错误处理:移除
On Error Resume Next,改用标准错误捕获逻辑,通过Err.Description显示具体错误信息 - 保留表单可编辑状态:校验失败时停留在当前记录,用户可直接修改缺失字段
内容的提问来源于stack exchange,提问作者AG316
相关产品推荐
相关产品推荐

