【问题标题】:Doing a Requery on a Form opened with acFormAdd creates a new record对使用 acFormAdd 打开的表单进行重新查询会创建一条新记录
【发布时间】:2013-08-24 17:22:40
【问题描述】:

假设用户想要创建一条新记录并为此打开一个表单。使用

打开表单时
DoCmd.OpenForm "FormName", acNormal, "", "", acFormAdd, acDialog

Access 将打开带有数据指针 设置在新/空记录上的表单。用户现在可以填写表单某些用户操作可能需要Me.Requery 才能发生。如果这样做,表单会“松开”当前创建和修改的记录上的数据指针,并跳转到一个新的空记录。即使在重新查询之前的Me.Dirty = False 也不会阻止 Access 这样做。我很确定这种行为是由参数 acFormAdd 引起的。

相比之下,用

打开一个表单
DoCmd.OpenForm "FormName", acNormal, "", "WHERE-CLAUSE", acFormEdit, acDialog

解决该行为,但仅适用于现有记录。

您可以想象这种未经请求的行为不是我所期望的,因为它迫使我实施一个丑陋的解决方法,即在满足某些条件时关闭和重新打开 from。

所以,我想知道是否有更简单的方法可以帮助我避免上述行为。非常感谢您的帮助!

【问题讨论】:

  • 嗯,2021年和我有同样的问题,似乎找不到解决办法。

标签: ms-access vba


【解决方案1】:

查看重新查询选定的表单控件是否可以在不重新查询整个表单的情况下完成所需的操作。

例如,要重新查询名为 cboUserID 的组合框,您可以这样做...

Me.cboUserID.Requery

【讨论】:

  • 我需要这些请求,因为我使用 SQL 查询“手动”更改数据库。当我这样做时,我需要重新查询表单,否则 Access 有时会告诉我数据已被另一个用户更改并且需要刷新(我不知道确切的错误代码)。所以我想知道你的方法是否能确保我不会遇到同样的错误。
【解决方案2】:

也许更好的解决方案是改用 .recalc。

DoCmd.Save
Me.recalc

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 1970-01-01
    • 2021-09-22
    • 2013-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多