在访问中,我试图不让用户退出文本框,除非他们填写了文本框(即没有将其填写为null)。这是在函数中完成的,以减少代码。在VBA中,是否有某种方法可以阻止用户退出功能?(我知道设置焦点,但我需要代码来从多种不同的文本框上工作)
作为参考,我的当前代码如下;
Function Reload()
If IsNull(EmployeeID.Value) Or IsNull([First Name].Value) Or IsNull([Surname].Value) Or IsNull(DOB.Value) Or IsNull(Position.Value) Or IsNull(Position.Value) Or IsNull(Mobile.Value) Or IsNull(Email.Value) Or IsNull(Address.Value) Or IsNull(Suburb.Value) Or IsNull(Postcode.Value) Or IsNull([Start Date].Value) Or IsNull(UserLogin.Value) Or IsNull(UserPassword.Value) Then
MsgBox "Please fill out all fields"
Else
DoCmd.RunCommand acCmdSaveRecord
Form.Refresh
End If
End Function
谢谢
我知道的最佳技术是使用BeforeUpdate
事件运行数据验证。使用您的if语句,如果数据不有效,请设置
Cancel = True
,数据不会写入。您可能希望禁用默认记录导航并形成关闭按钮并使用自定义按钮,以便您可以捕获无效的数据错误并防止移动到新记录或关闭表单。但是,即使您允许用户使用内置的内置导航按钮或关闭按钮访问,也会发布有关无法保存当前记录并提示用户是否要继续的错误消息。
您也可以进一步走,并在哪些字段无效并提供消息框。
Msgbox ("The following fields were left blank and must be entered to save this record:" & vbCrLf & "Field 1" & vbCrLf & "Field 2")
我在聊天室中使用的文本输入限制器进行了一些修改,这应该有所帮助。我称其为"必须键"的新功能,并将其称为您不想从输入中移动的文本框的丢失。
Private Sub MyTextBox_LostFocus()
Call MustINPUT (Me.MyTextBox, 0)
End Sub
只需更改用户的消息。
Sub MustINPUT(ctl As Control, iMaxLen As Integer)
'Call MustINPUT(Me.txtSayThis, 0)
If Len(ctl.Text) = iMaxLen Then
MsgBox "Please Type something", vbExclamation, "Input Needed"
ctl.Text = Left(ctl.Text, iMaxLen)
ctl.SelStart = iMaxLen
End If
End Sub
希望这有所帮助。DR,