首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >每次更改都能节省成本

每次更改都能节省成本
EN

Stack Overflow用户
提问于 2018-03-10 02:24:37
回答 2查看 52关注 0票数 0

使用Access VBA,在表单中,我想在每次字段更改时进行保存。我猜是因为我使用了一些非常复杂的查询,它们不总是在脏的时候立即保存。DoCmd.RunCommand acCmdSaveRecord做到了这一点。

因此,我的解决方法是每个字段都有

代码语言:javascript
运行
复制
Private Sub MyField_AfterUpdate()
    If Me.Dirty Then Me.Dirty = False
    DoCmd.RunCommand acCmdSaveRecord
End Sub

有没有更优雅的解决方案?

EN

回答 2

Stack Overflow用户

发布于 2018-03-10 05:47:36

我能添加的唯一优雅之处就是将第一行改为Me.Dirty = False

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

票数 0
EN

Stack Overflow用户

发布于 2018-03-10 16:19:16

你不需要为每个控件都写出这些代码。只有一个函数:

代码语言:javascript
运行
复制
Private Sub CommitChanges()
    If Me.Dirty Then Me.Dirty = False
    DoCmd.RunCommand acCmdSaveRecord
End Sub

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

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

代码语言:javascript
运行
复制
Private Sub CommitChanges()
    If Me.Dirty And Me.Recordset.Updateable Then Me.Recordset.Update
End If
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49199938

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档