保存类模块后,解决了Access中的写入冲突错误。

问题描述 投票:0回答:1

我有一个用于查看表中数据的表单,它可以打开一个弹出式表单来编辑数据。

当在弹出窗体中编辑数据时,Access在关闭该窗体并返回到原来的窗体时,会抛出一个写冲突错误。

我遇到的奇怪行为是,当我在VBA中对弹出窗体的类模块进行修改时,即使我立即撤销修改并保存,错误也会准确地解决一次。

要说明的是。

  1. 我在VBA中对弹出窗口的类模块进行了修改 (即使我立即撤销修改并重新保存)

  2. 我可以从我的原始表格中打开弹出窗口,编辑记录,然后关闭弹出窗口。在关闭弹出窗口时不会出现任何错误。

  3. 然后我打开弹出窗口,第二次编辑记录。然后在关闭弹出窗口时,会显示一个写冲突的错误。随后每次都是这样。

  4. 我现在对弹出的类模块进行修改(再一次,哪怕是一个微不足道的修改),再次编辑一次错误就解决了,然后这个过程就重复了。

有人知道为什么会出现这种行为吗?任何帮助都将是非常感激的。

ms-access access-vba
1个回答
1
投票

这个问题的中心是,如果两个用户,或者在这种情况下,两个代码位试图编辑一条已经是脏的记录。

如果主窗体导致记录变脏(改变了,但没有保存),如果你运行任何其他代码也改变了数据,那么你就会得到冲突。

那么简单的解决方案是,在你运行+调用可能会改变脏记录的代码之前,总是要确保当前表单的记录被安全地隐藏起来并保存。这包括那个弹出窗体+类。

所以在你的代码中,启动formclass代码?就在你启动那第2个窗体之前进行。

If me.Dirty = True then me.dirty = False

所以,上面的代码会安全地写出肮脏的记录, 现在你可以自由地启动运行任何其他可能改变记录的代码。因为你运行了上面的代码?好了,记录不再是脏记录了,因此你不应该看到也不会收到写冲突的错误。

所以,在你启动run那个额外的代码form之前,增加一个检查保存if dirty,就可以解决这个问题。事实上,作为一种习惯,对于 "任何 "启动额外的UI窗体,当启动额外的UI位和部件时,将当前的窗体记录安全地收起来并保存是一个好主意。

© www.soinside.com 2019 - 2024. All rights reserved.