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
相关产品推荐
相关产品推荐

