有没有办法覆盖使用表单向导创建的Access 2007表单的自动记录更新?

Joh*_*ohn 4 forms ms-access ms-access-2007 access-vba

我是Access VBA的新手,并使用表单向导创建表单,该表单在表中显示记录.那是小菜一碟.

但是,我从表单中获得的行为是,当我移动记录时,记录的更新会自动发生.

我想要的是只有当我点击我放在表单中的"更新"按钮时才会发生更新.

看起来我可以从头开始构建表单,以编程方式更新所有(无界)控件,然后以编程方式从控件更新记录,但这似乎太多了.

有没有办法从Access中"关闭"自动更新行为,或使用VBA代码?

谢谢!

Han*_*sUp 6

正如Robert建议的那样,您可以通过取消更新前事件来避免保存更改的记录.代码看起来像这样:

Private Sub Form_BeforeUpdate(Cancel As Integer)
    Me.Undo
    Cancel = True
End Sub
Run Code Online (Sandbox Code Playgroud)

但是,该方法要求您放弃对记录所做的任何更改,然后才能将其移除.如果没有Me.Undo,您可以取消更新,但Access不允许您移动到其他记录.您必须先保存或放弃对当前记录的更改,然后再转移到另一个记录.

如果您想要移动到另一条记录但不首先丢弃更改,我认为您需要尝试断开连接的记录集.它是您在内存中创建的ADO记录集,不受任何数据源的约束.您可以添加命令按钮以保存对命令的更改.如果听起来有用,请参阅Danny Lesandrini在Database Journal:Create In-Memory ADO Recordsets中的这篇文章