我有一个包含3个不同TextBox和2个按钮的表单 - >保存并关闭。
TextBox中的2个是不可见的。其中1个不可见的TextBoxes是自动增量整数,第二个具有表单的onLoad值。最后一个需要填写。
我想要的是什么:当用户点击按钮时#34;关闭" - 即使可见的TextBox为空,表单也会关闭。
我现在所拥有的:当用户点击"关闭"按钮 - 访问带有错误"文本框为空"。
答案 0 :(得分:1)
听起来你想要控制记录的保存。但与此同时,我认为你将表格的Record Source
设置为某种东西。下面演示了如何自己控制记录的保存:
我在设计视图中有以下表格:
在常规视图中,它看起来如下所示:
我将表单上的Record Source
设置为空。
此演示的3个文本框的名称为:txtField1
,txtField2
和txtField3
以下是表单背后的代码:
Private Sub cmdSave_Click()
If (Len(txtField3 & "") <> 0) Then
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO yyy (Field2, Field3) " & _
"VALUES ('" & txtField2 & "', '" & txtField3 & "')"
DoCmd.SetWarnings True
MsgBox "You have successfully saved the record.", , "SUCCESS"
Else
MsgBox "You must provide a value for Field 3 " & _
"before saving the record." & vbNewLine & vbNewLine & _
"The record was not saved.", , "MISSING INFORMATION"
End If
End Sub
Private Sub Form_Load()
txtField2 = "test"
End Sub
Private Sub cmdClose_Click()
On Error GoTo Err_cmdClose_Click
DoCmd.Close
Exit_cmdClose_Click:
Exit Sub
Err_cmdClose_Click:
MsgBox Err.Description
Resume Exit_cmdClose_Click
End Sub
当表单打开时,txtField2
会自动获得一个值。当用户点击Save
按钮时,代码会检查他们是否在txtField3
中输入了值。如果他们这样做,则执行INSERT
语句,并显示表明记录已成功保存的消息。如果他们没有在txtField3
中输入值,则会显示一条消息,说明他们无法保存记录,直到他们提供值。
由于未设置表单的Record Source
,因此关闭表单没有任何问题。
实际上,对于AutoNumber
字段,您甚至不需要一个文本框。正如您在上面的示例中所看到的,我没有在INSERT
语句中传递它。数据库将为您处理。