You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access零件位置数据库必填字段校验异常问题求助

问题分析与解决方案

你的代码存在三个核心问题:

  1. 校验失败后未终止流程:跳转到错误提示标签后未执行Exit Sub,程序会继续执行后续添加新记录的代码,导致不完整数据被写入表中
  2. 错误处理逻辑混乱:On Error Resume Next会屏蔽错误,且MacroError是宏对象的错误属性,VBA中应使用标准的Err对象
  3. 表单状态未重置:校验失败后未将表单恢复到可编辑的原有状态,导致无法修改字段

修改后的完整代码

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 20:30:56