如果您有表单集的记录源,则任何绑定控件的条目都会导致AutoNumber
填充任何字段。如果用户放弃或没有输入所有必需的信息,则跳过该自动编号。
为避免这种情况,您可以自己保存记录。假设您定义了下表:
并创建了以下表单:
后面有以下代码:
Private Sub cmdClose_Click()
DoCmd.Close
End Sub
Private Sub cmdSave_Click()
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO z_TestTable (DueDate, " & _
"DateReceived, " & _
"Terms, " & _
"ECOFee, " & _
"Classification) " & _
"VALUES (#" & txtDueDate & "#, " & _
"#" & txtDateReceived & "#, " & _
"'" & txtTerms & "', " & _
txtECOFee & ", " & _
"'" & txtClassification & "')"
MsgBox ("RECORD SAVED")
End Sub
Private Sub txtClassification_AfterUpdate()
funCheckForRequiredFields
End Sub
Private Sub txtDateReceived_AfterUpdate()
funCheckForRequiredFields
End Sub
Private Sub txtDueDate_AfterUpdate()
funCheckForRequiredFields
End Sub
Private Sub txtECOFee_AfterUpdate()
funCheckForRequiredFields
End Sub
Private Sub txtTerms_AfterUpdate()
funCheckForRequiredFields
End Sub
Function funCheckForRequiredFields()
Dim NotComplete As Boolean
NotComplete = False
If (IsNull(txtDueDate)) Then NotComplete = True
If (IsNull(txtDateReceived)) Then NotComplete = True
If (IsNull(txtECOFee)) Then NotComplete = True
If (IsNull(txtClassification)) Then NotComplete = True
If (IsNull(txtTerms)) Then NotComplete = True
If (NotComplete) Then _
cmdSave.Enabled = False Else _
cmdSave.Enabled = True
End Function
表单打开,保存记录按钮被禁用。保存记录按钮仅在输入所有字段后启用。当按下保存记录时,记录通过DoCmd.RunSQL
命令保存。
我将表单上控件的格式设置为与所需数据相对应。这可确保检查输入的数据的有效性。
通过使用此方法,将使用自动编号字段并且没有针对它保存记录的唯一方法是如果 INSERT SQL 无效。由于事先已对其进行检查,因此永远不会发生这种情况。