【发布时间】:2021-10-15 10:29:39
【问题描述】:
我遇到的问题是,许多表单控件触发事件,这些事件会更改绑定到表单的其他字段,从而导致写入冲突。我已尝试放置 If Me.Dirty Then Me.Dirty = False 以保存用户与表单交互的任何更改,但无论放置在何处,我仍然会收到写入冲突。
例如这样会导致写冲突:
Me!pnls_rte_profiles_id = Me!pr_rte
Me.Dirty = False
我正在使用带有相当大数据库的 MS Access 2019。表单记录集来自通过 ODBC 连接器链接的 12 个不同的表。每个表都有一个主键和一个时间戳,但时间戳不会作为记录集查询的一部分。
【问题讨论】:
-
尝试将表单绑定到视图模型。那就是添加一个带有一堆公共函数的代码模块,比如GetMyvalue、SetMyvalue、CalculatemyValue。然后将表单绑定到视图模型,方法是将对其他表单控件的调用替换为对视图模型的调用。这是我最近给出的一个例子:stackoverflow.com/questions/68717654/…
-
不太了解问题。在数据输入期间,我经常在一个控件后面编辑另一个字段。
-
代替
Dirty,尝试DoCmd.RunCommand acCmdSaveRecord保存更改。 -
问题似乎源于将值设置为等于它已经存在的值。所以设置
Me!pnls_rte_profiles_id = 11已经是11 会导致冲突,但Me!pnls_rte_profiles_id = 12设置为11 不会。我可以检查它是否设置了一个新值,但我觉得这没有必要?