保存每一个变化

时间:2018-03-09 18:24:37

标签: vba ms-access access-vba

使用Access VBA,在表单中,我希望每次字段更改时保存。我猜是因为我使用了一些非常复杂的查询,所以当他们弄脏时,他们不会立即保存。 DoCmd.RunCommand acCmdSaveRecord可以解决问题。

所以我的解决方法是每个字段都有

Private Sub MyField_AfterUpdate()
    If Me.Dirty Then Me.Dirty = False
    DoCmd.RunCommand acCmdSaveRecord
End Sub

有更优雅的解决方案吗?

2 个答案:

答案 0 :(得分:0)

我可以添加的唯一优雅是将第一行更改为Me.Dirty = False

这是基于简单的逻辑,如果Me.Dirty为false,则赋值不会改变任何内容,但如果Me.Dirty为真,那么您希望将其更改为false。

答案 1 :(得分:0)

您不需要为每个控件写出该代码。只有一个功能:

Private Sub CommitChanges()
    If Me.Dirty Then Me.Dirty = False
    DoCmd.RunCommand acCmdSaveRecord
End Sub

然后,对于每个控件,不要将更新后事件设置为[Event Handler],而是将其设置为=CommitChanges()

但请注意,我不喜欢DoCmd.RunCommand。你可以尝试:

Private Sub CommitChanges()
    If Me.Dirty And Me.Recordset.Updateable Then Me.Recordset.Update
End If