Vba 如何在关闭时阻止记录被覆盖

Vba 如何在关闭时阻止记录被覆盖,vba,ms-access,recordset,Vba,Ms Access,Recordset,当我关闭表单时,当前记录将覆盖表中的第一条记录。如果在关闭表单之前包含“Me.Undo”,则表单上的数据将更改,但不会更改基础表中的数据。我怎样才能阻止这两种情况的发生 Private子表单_Load() Dim strSelect As字符串 strSelect=“按tblData.txtName从tblData订单中选择* 设置dbs=CurrentDb() Set rst=dbs.OpenRecordset(strSelect,dbOpenDynaset) rst.MoveFirst Me

当我关闭表单时,当前记录将覆盖表中的第一条记录。如果在关闭表单之前包含“Me.Undo”,则表单上的数据将更改,但不会更改基础表中的数据。我怎样才能阻止这两种情况的发生

Private子表单_Load()
Dim strSelect As字符串
strSelect=“按tblData.txtName从tblData订单中选择*
设置dbs=CurrentDb()
Set rst=dbs.OpenRecordset(strSelect,dbOpenDynaset)
rst.MoveFirst
Me.txtName=rst!txtName
Private Sub btnClose_Click()
”“我
MsgBox“”
文件关闭acForm,“frmdata”,acSaveNo

我希望表单关闭时不显示另一条记录,也不覆盖表中的另一条记录。

很可能表单的DataSource属性设置为“tblData”。 因此,在加载表单之后,将触发Form_Load()事件,并修改在表单的DataSource属性中设置的表的第一条记录


这是修改表单数据的行:Me.txtName=rst!txtName

好吧,您编写代码的方式似乎有问题。您是否有其他针对“On_Current()事件”等运行的代码。?也许,您应该提供有关该问题的更多详细信息,以便能够复制该问题以找到解决方案。首先,您需要确定这是一个绑定表单(然后您不需要代码来加载或保存记录),还是一个未绑定表单(然后,除了您的代码之外,任何内容都不会被覆盖)。