关闭表单没有错误

时间:2014-05-13 18:29:12

标签: ms-access access-vba ms-access-2013

我有一个包含3个不同TextBox和2个按钮的表单 - >保存并关闭。 TextBox中的2个是不可见的。其中1个不可见的TextBoxes是自动增量整数,第二个具有表单的onLoad值。最后一个需要填写。
我想要的是什么:当用户点击按钮时#34;关闭" - 即使可见的TextBox为空,表单也会关闭。
我现在所拥有的:当用户点击"关闭"按钮 - 访问带有错误"文本框为空"。

1 个答案:

答案 0 :(得分:1)

听起来你想要控制记录的保存。但与此同时,我认为你将表格的Record Source设置为某种东西。下面演示了如何自己控制记录的保存:

我在设计视图中有以下表格:

enter image description here

在常规视图中,它看起来如下所示:

enter image description here

我将表单上的Record Source设置为空。

此演示的3个文本框的名称为:txtField1txtField2txtField3

以下是表单背后的代码:

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语句中传递它。数据库将为您处理。