【问题标题】:microsoft access requery updates form after 2 requeries2 次请求后,microsoft access 重新查询更新表单
【发布时间】:2014-09-02 01:47:44
【问题描述】:

所以我有一个表格 (A) 、一个表格 (B) 和一个表格 (X)。两种形式都基于表 (X) 的查询。用户可以单击表单 A,它将打开过滤到该用户单击的表单 B。这个工程的 vba 是:

docmd.openform "formB" , , , "mykey = " & me.mykey

一旦用户使用表单 B,他们就可以使用组合框下拉菜单更新表 (X)。表单 B 上的用户可以选择记录和更改表 X 上信息的记录旁边的下拉列表。一旦信息发生更改,它会在后端表中相应更新。

我的问题是这些更改都没有反映在任何一种形式中。我尝试用来更新表单的 vba 是
forms!formB.requery
forms!formA.requery

奇怪的是,如果我单击表单 A 并重新打开表单 B 以更改第二条记录,我现在可以看到以前的更新。因此,第二次重新查询会为第一次更改正确更新。有什么想法吗?

【问题讨论】:

  • 我的猜测是您的forms!formB.requery 不正确。简单地尝试Me.Requery 看看会发生什么(如果它有任何作用)。或Me.formB.Requery
  • 这两个都试过了,没有做任何事情。当我运行 [forms!formB.requery] 时,我可以看到重新查询发生在访问的右下角。所以我相信 VBA 是正确的,只是与我设置表单或表格的方式有关,或者有什么问题。
  • 试试这个,作为一个简单的测试:Me.Refresh.. 你用什么处理程序来触发Requery
  • @barker:您可能想在调用 Requery 命令之前尝试 DBEngine.Idle dbRefreshCache - 也许数据还没有被刷新?如果一切都失败了,也许是 DoCmd.Requery 而不是 form.Requery。文档说这需要更长的时间,但它会关闭并重新打开基础查询。不过,不确定它是否会有很大的不同。

标签: sql forms ms-access vba


【解决方案1】:

这是访问中的错误,而不是我的代码。如果在运行重新查询时组合框具有焦点,它将无法正确更新表单,尽管后端的表仍会更新。我通过在更新后更改焦点的组合框中添加代码来修复它,现在它可以工作了。

【讨论】:

  • 很高兴你能成功。请问您是否找到了有关该行为的任何文档?希望对此做一些研究。谢谢。
  • MS 文档里有msdn.microsoft.com/en-us/library/office/… 如果省略表达式指定的对象,Requery 方法会重新查询具有焦点的窗体或控件的基础数据源。如果拥有焦点的控件有记录源或行源,则会被重新查询;否则,控件的数据只会被刷新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多