Ms access 完成必填字段后如何在MS Access中打开新记录

Ms access 完成必填字段后如何在MS Access中打开新记录,ms-access,vba,Ms Access,Vba,我在Access中创建了一个表单,其中有一系列必填字段。完成所有必填字段并单击名为AddNewRecord的按钮后,我需要刷新表单,以便他们可以输入新数据。我使用在Stackoverflow上找到的狙击手创建了这个表单。在大多数情况下,表单做了我需要它做的事情。它检查缺少的字段,显示错误字段是否正确我缺少的部分不会刷新页面。它没有显示任何错误。如有任何见解或建议,将不胜感激。下面是我目前使用的代码 多谢各位 Private Function CheckAllFields() As Boolean

我在Access中创建了一个表单,其中有一系列必填字段。完成所有必填字段并单击名为AddNewRecord的按钮后,我需要刷新表单,以便他们可以输入新数据。我使用在Stackoverflow上找到的狙击手创建了这个表单。在大多数情况下,表单做了我需要它做的事情。它检查缺少的字段,显示错误字段是否正确我缺少的部分不会刷新页面。它没有显示任何错误。如有任何见解或建议,将不胜感激。下面是我目前使用的代码

多谢各位

Private Function CheckAllFields() As Boolean
Dim Ctrl As Control
CheckAllFields = False
For Each Ctrl In Me.Controls
 If Ctrl.Tag = "*" And IsNull(Ctrl) Then
            MsgBox "Please complete ALL required fields"
    CheckAllFields = True
    Exit For
 End If
Next Ctrl
End Function

Private Sub New_Record_Click()
If CheckAllFields = True Then Exit Sub

If PYMT_AMT < AMT_RECOVERED And CONSOLIDATED_CK = "NO" Then
MsgBox "CONSOLIDATED CHECK ERROR" & vbCrLf & _
        "The Amount Recovered is greater than the Exception Amount." & vbCrLf & _
        " Please confirm answer to Consolidated Check question"

End If

If PYMT_AMT > AMT_RECOVERED And CONSOLIDATED_CK = "YES" Then
MsgBox "CONSOLIDATED CHECK ERROR" & vbCrLf & _
        "The Amount Recovered is less than the Exception Amount." & vbCrLf & _
        " Please confirm answer to Consolidated Check question"

End If

If PYMT_AMT > AMT_RECOVERED And PARTIAL_RECOVERY = "NO" Then
MsgBox "PARTIAL RECOVERY ERROR" & vbCrLf & _
    "The Amount Recovered is less than the Exception Amount." & vbCrLf & _
        " Please confirm answer to Partial Recovery question."

End If

If PYMT_AMT < AMT_RECOVERED And PARTIAL_RECOVERY = "YES" Then
MsgBox "PARTIAL RECOVERY ERROR" & vbCrLf & _
    "The Amount Recovered is greater than the Exception Amount." & vbCrLf & _
        " Please confirm answer to Partial Recovery question."

End If

If RECOVERY_TYP = "Check Payable to Fiserv" And CHECK_NUM = "" Then
MsgBox "Please enter check number." & vbCrLf & _
        " AND Please confirm answer to Partial Recovery question."

End If

If Me.RECOVERY_TYP = "Check Payable to Fiserv" Then
If IsNull(Me.CHECK_NUM) Then
MsgBox "Please Enter Check Number"
Cancel = True
Me.CHECK_NUM.SetFocus
End If
End If

End Sub

似乎你可以加上:

Me.DataEntry=True


…在您的结束子部分之前。

我不确定您的表单是否绑定到表,但是如果是这样,一旦您确保现有表单数据已验证并持久化,您能否将下面的行添加到您的代码中?这将使您看到一个表单字段为空的新表记录

DoCmd.GoToRecord acDataForm, "Your Form Name", acNewRec

有点奏效了。我在表单中输入了信息,以便填充错误消息。当我单击“确定”确认错误消息时,表单在不允许我修复错误的情况下进行了刷新。因此,me.DataEntry=True“似乎”完成的是,当所有必需字段中都有“某物”时,它刷新了页面,但它没有循环返回以根据各种IF语句检查字段的准确性。我将继续对此进行研究。然后,使用DoCmd.RunCommand accmdsave而不是使用Me.DataEntry=True,我将按照建议使用DoCmd替换Me.DataEntry命令。表单的行为与最初的一样。。它将执行所有检查和平衡,1确保所有“必需”字段已完成,2验证某些字段的准确性。。但是,当我单击按钮时,它并没有像我需要的那样清除表单字段。我按照建议用DoCmd替换了Me.DataEntry命令。表格将进行检查,以确保所有“必填”字段均已填写,并验证某些字段的准确性。。但是,当我单击按钮时,它不会像我需要的那样清除表单字段。我尝试了另一种方法,添加了一个保存按钮,其中包含所有验证代码,然后更改了添加新记录按钮,使其只转到新记录。我担心的是,有人可能会部分填写表单,然后单击“添加新记录”按钮,然后看到一张空白表单。