使用Access VBA,在表单中,我希望每次字段更改时保存。我猜是因为我使用了一些非常复杂的查询,所以当他们弄脏时,他们不会立即保存。 DoCmd.RunCommand acCmdSaveRecord
可以解决问题。
所以我的解决方法是每个字段都有
Private Sub MyField_AfterUpdate()
If Me.Dirty Then Me.Dirty = False
DoCmd.RunCommand acCmdSaveRecord
End Sub
有更优雅的解决方案吗?
答案 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