【发布时间】: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。文档说这需要更长的时间,但它会关闭并重新打开基础查询。不过,不确定它是否会有很大的不同。