使用Access VBA,在表单中,我想在每次字段更改时进行保存。我猜是因为我使用了一些非常复杂的查询,它们不总是在脏的时候立即保存。DoCmd.RunCommand acCmdSaveRecord做到了这一点。
因此,我的解决方法是每个字段都有
Private Sub MyField_AfterUpdate()
If Me.Dirty Then Me.Dirty = False
DoCmd.RunCommand acCmdSaveRecord
End Sub有没有更优雅的解决方案?
发布于 2018-03-10 05:47:36
我能添加的唯一优雅之处就是将第一行改为Me.Dirty = False。
这是基于简单的逻辑,如果Me.Dirty为false,则赋值不会更改任何内容,但如果Me.Dirty为true,则您希望将其更改为false。
发布于 2018-03-10 16:19:16
你不需要为每个控件都写出这些代码。只有一个函数:
Private Sub CommitChanges()
If Me.Dirty Then Me.Dirty = False
DoCmd.RunCommand acCmdSaveRecord
End Sub然后,对于每个控件,将其设置为=CommitChanges(),而不是将更新后事件设置为[Event Handler]
但是请注意,我不喜欢DoCmd.RunCommand。您可以尝试:
Private Sub CommitChanges()
If Me.Dirty And Me.Recordset.Updateable Then Me.Recordset.Update
End Ifhttps://stackoverflow.com/questions/49199938
复制相似问题