MS Access记录在点击进入子表单时自动保存



我在MS Access/SQL Server 2019中有一个典型的订单数据输入表单/子表单设置。表单中有2个按钮:保存/取消。

这是按钮的代码:
Private Sub cmdSave_Click()
On Error Resume Next
DoCmd.Close acForm, "frmDEPurchaseOrder", acSaveYes
RefreshForm ("frmPurchaseOrderDetails")
RequeryForm ("frmPurchaseOrderList")
End Sub
Private Sub cmdCancel_Click()
On Error Resume Next
If MsgBox("Změny budou zrušeny. Chcete pokračovat?", vbYesNoCancel + vbExclamation, "Upozornění") <> vbYes Then Exit Sub
Me.Undo
DoCmd.Close acForm, "frmDEPurchaseOrder", acSaveYes
RefreshForm ("frmPurchaseOrderDetails")
RequeryForm ("frmPurchaseOrderList")
End Sub

"Save"按钮按预期工作,但是当我添加新订单时,填写基本订单信息,然后单击子表单添加项目,此时创建订单记录。

问题是,当我点击"取消"时,订单仍然保存在SQL Server 2019中。

是否有任何简单的方法不保存/删除记录,如果我在此过程中随时点击取消?

只要您正在使用绑定表单,只要您的输入焦点从该记录移动到其他内容,就会创建记录。你有两个选择。干净的方法是在单独的表上创建新订单,并且只将它们转移到"save"上的主表上。更简单但更脏的方法是通过删除"取消"上创建的所有记录来进行清理。无论哪种方式,你都必须用你的代码来管理记录,你将无法仅仅通过一个参数来关闭表单。

当主订单表上的条目被删除时,如果您的订单项子表被设置为级联删除,则相对容易使用选项2。

在Subform getfoccs事件中,您可以使用以下代码

Sub YourSubForm_GetFoucs()
Me.Parent.Refresh
End Sub

相关内容

  • 没有找到相关文章