You need to enable JavaScript to run this app. MS Access 点击保存后立刻触发必填字段错误提示是什么原因?
优惠活动
大模型
产品
解决方案
定价
更多

MS Access 点击保存后立刻触发必填字段错误提示是什么原因?

问题根因
  • 新记录跳转位置错误:你将DoCmd.GoToRecord , "", acNewRec放在了校验逻辑最前端,点击保存按钮后会先跳转到空白新记录页,此时表单的所有输入字段都会变成空值,后续执行必填校验时自然触发错误提示。你之前填写的内容是在跳转前的旧记录里已经被保存了,但跳转后的空记录校验逻辑还是会正常执行弹出提示,这就是你看到保存成功还弹报错的核心原因。
  • Null值比较逻辑错误:VBA中不支持直接用<>/=判断值是否为Null,任何值和Null直接比较的结果都是Null而非布尔值,你代码里If DLookup("UserName", "tFaculty", myUserName) <> Null Then永远不会触发,用户名重复校验逻辑完全不生效,需要改为用IsNull()函数判断。
  • 错误处理规则冲突:同时声明On Error GoTo Add_Faculty_Click_Err和On Error Resume Next会导致后者覆盖前者,你写的自定义错误捕获分支完全不会生效。
修正方案

调整代码执行顺序:先做当前记录的字段校验→校验通过后保存当前记录→最后再跳转新记录,同时修复上面提到的其他问题即可,修正后参考代码如下:

' Click event for Save button
Private Sub cmdSave_Click()

' ToDo fix the labels in this function so they match the function name. Just cosmetic.
On Error GoTo Add_Faculty_Click_Err

    Dim OKToSave As Boolean
    OKToSave = True

    ' 先校验当前正在编辑的记录字段
    If Not SomethingIn(Me.FirstName) Then          ' Null
        Beep
        MsgBox "A first name is required", vbOKOnly, "Missing Information"
        OKToSave = False
    End If
    If Not SomethingIn(Me.Combo17) Then
        Beep
        MsgBox "A department is required", vbOKOnly, "Missing Information"
        OKToSave = False
    End If
    
    If Not SomethingIn(Me.LastName) Then
        Beep
        MsgBox "A last name is required", vbOKOnly, "Missing Information"
        OKToSave = False
    End If
    If Not SomethingIn(Me.Text19) Then
        Beep
        MsgBox "A user name is required", vbOKOnly, "Missing Information"
        OKToSave = False
    Else
        Dim myUserName As String
        myUserName = "UserName = " + Chr(34) + Me.Text19 + Chr(34)
        ' 修复Null值判断逻辑
        If Not IsNull(DLookup("UserName", "tFaculty", myUserName)) Then
            MsgBox "User name already on file", vbOKOnly, "User name already on file."
            OKToSave = False
        End If
    End If
    If OKToSave Then
        ' 校验通过再保存当前记录
        DoCmd.RunCommand acCmdSaveRecord
        ' ToDo refresh and synch combo box
        Me.cbFacultyID = Me.FacultyID
        ' ToDo hide save and cancel buttons
        Me.cmdSave.Visible = False
        Me.cmdCancel.Visible = False
        ' ToDo show Add and delete buttons
        Me.[Add Faculty].Visible = True
        Me.Delete.Visible = True
        ' 保存成功后再跳转到新记录
        DoCmd.GoToRecord , "", acNewRec
    End If
    
    
Add_Faculty_Click_Exit:
    Exit Sub

Add_Faculty_Click_Err:
    
    Resume Add_Faculty_Click_Exit

End Sub

内容的提问来源于stack exchange,提问作者JC3

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 02:00:05