在添加模式下打开表单,然后保存,然后将其置于编辑模式下-刷新还是重新查询?

时间:2018-12-21 16:16:12

标签: access-vba

我使用acFormAdd属性和按钮使用OpenForm,允许用户保存记录,并且在仍处于表单的同一实例中时,他们可以单击“编辑”按钮来设置me.AllowEdits=True。 (此外,me.newrecords此时为false),在编辑模式下,他们可以单击运行Shell脚本的按钮,该脚本更新基础的“ new”记录数据。在继续进行进一步的输入并尝试保存时,由于记录现在与SQL数据库不同步,这将导致“数据已更改”错误。 (因为shell脚本更改了数据)

因此,本来想在运行“ Shell”之后me.Requery进行数据处理,但这会引起问题。尽管我可以看到记录已保存在基础表中(不再是“新”记录),但表单仍然认为它是“添加”类型的表单。

因此,然后我尝试更改me.allowadditions = false,认为它的行为就像在“编辑”模式下打开的表单一样(在该模式下,运行重新查询没有问题-即使用acFormEdit打开了表单)。

因此,我放弃尝试更改me.allowadditions,在此期间,我在“外壳”之后应用了创可贴,效果似乎还可以。

vba.createobject("XXX.shell").run(blablabla)
If Me.AllowAdditions Then
    Me.Refresh
Else
    Me.Requery
End If

控件的后续更新不冲突。这似乎是一个好的解决方案,但很好奇...

为什么表单处于“添加”模式,但是后来按照我描述的方式进行了更改,而不是真正地表现为编辑模式下的表单/记录?似乎仍然认为当前记录还没有真正“增加”。尽管me.newrecord错了。

在整个数据库中,我为用户提供了选择,以使用“新建”或“编辑”打开一个。然后在随后的保存中,我只想实现allowadditions = false(请注意,我们并不总是强制关闭表单)。这应该使我能够解决任何可能需要重新查询数据的表单实例,无论它们处于添加/编辑模式下如何。

有人知道为什么会这样吗?

0 个答案:

没有答案
相关问题