vba - 如何使用 VBA 在 MS Access 中添加新记录?

标签 vba forms ms-access button

我正在为用户使用绑定(bind)表单来更新有关新客户或现有客户的信息。现在我在提交按钮上使用添加新记录宏(因为我不确定如何通过 VBA 添加或保存新记录)。

我添加了一个更新前事件(使用 VBA),让用户在退出表单之前确认他们想要保存更改。由于某种原因,这覆盖了添加记录按钮,现在用户在退出表单之前无法添加新记录。

如何使用 VBA 将新客户信息添加到正确的表中?这是应该用宏来完成的吗?

表格更新前代码:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
Dim strmsg As String 
strmsg = "Data has been changed." 
strmsg = strmsg & " Save this record?" 
If MsgBox(strmsg, vbYesNo, "") = vbNo Then 
    DoCmd.RunCommand acCmdUndo 
Else 
End If 
End Sub

添加录制按钮:
Private Sub btnAddRecord_Click() 
Dim tblCustomers As DAO.Recordset 

Set tblCustomers = CurrentDb.OpenRecordset("SELECT * FROM [tblCustomers]") 
tblCustomers.AddNew 
tblCustomers![Customer_ID] = Me.txtCustomerID.Value 
tblCustomers![CustomerName] = Me.txtCustomerName.Value 
tblCustomers![CustomerAddressLine1] = Me.txtCustomerAddressLine1.Value 
tblCustomers![City] = Me.txtCity.Value 
tblCustomers![Zip] = Me.txtZip.Value 
tblCustomers.Update 
tblCustomers.Close 
Set tblCustomers = Nothing 
DoCmd.Close 
End Sub

最佳答案

要使用 VBA 提交记录,请创建 On Click按钮的事件,其中 Sub运行以下命令:

Private Sub submitButton_Click()

    'All the code to validate user input. Prompt user to make sure they want to submit form, etc.

    DoCmd.RunSQL "INSERT INTO tblCustomers (CustomerID, CustomerName, CustomerAddressLine1, City, Zip) values (txtCustomerID.Value, txtCustomerName.Value, txtCustomerAddressLine1.Value, txtCity.Value, txtZip.Value)"

End Sub
在此 Sub 中,您可以添加要验证用户输入的值的所有代码,并选择是否要提交记录。使用 VBA 提交表单有很多控制,因此您不需要 BeforeUpdate事件。
此外,请勿在此方法中使用绑定(bind)表单。我不知道有什么影响,但我不会尝试。 Access 非常适合开始使用,但是当您想做更复杂的事情时,使用 VBA 会更容易。

关于vba - 如何使用 VBA 在 MS Access 中添加新记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39109270/

相关文章:

vba - 如何将 CLEAN() 公式应用于整个 Excel 工作表?

vba - If Not 函数在 value *is* 指定时继续

vba - 如何从 ActiveCell 分配范围以供将来引用 (VBA)

vba - 应用程序定义或对象定义的错误

JQuery如何在ajax调用成功后重新提交表单

node.js - 使用 busboy 从表单中获取字段值

sql - 尝试加入 Access 时出现语法错误

vba - Ms Access 数据库在使用 vba 打开时可以创建自身的备份吗?

excel - Access VBA 与 Excel 交互,第二次得到错误 91

javascript - 未调用表单 'onsubmit'