Sql microsoft access重新查询在2次重新查询后更新表单

Sql microsoft access重新查询在2次重新查询后更新表单,sql,forms,ms-access,vba,Sql,Forms,Ms Access,Vba,我有一个表格(a),一个表格(B)和一个表格(X)。这两种形式都基于表(X)的查询。用户可以点击表单A,它将打开表单B,并根据用户点击的内容进行过滤。本工程的vba有效,为: docmd.openform "formB" , , , "mykey = " & me.mykey 一旦用户进入表单B,他们就可以使用组合框下拉菜单更新表(X)。表单B上的用户可以选择一条记录,并在记录旁边选择一个下拉列表,以更改表X上的信息。一旦信息更改,它将在后端表中相应地更新 我的问题是,这两种形式都没有

我有一个表格(a),一个表格(B)和一个表格(X)。这两种形式都基于表(X)的查询。用户可以点击表单A,它将打开表单B,并根据用户点击的内容进行过滤。本工程的vba有效,为:

docmd.openform "formB" , , , "mykey = " & me.mykey
一旦用户进入表单B,他们就可以使用组合框下拉菜单更新表(X)。表单B上的用户可以选择一条记录,并在记录旁边选择一个下拉列表,以更改表X上的信息。一旦信息更改,它将在后端表中相应地更新

我的问题是,这两种形式都没有反映出这些变化。我试图用来更新表单的vba是
形式!表格B.重新查询
形式!形式再查询


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

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

我猜您的
表单!表单B.重新查询
不正确。试着简单地
Me.Requery
看看会发生什么(如果它做了什么)。或者
Me.formB.Requery
尝试了这两种方法,但什么也没做。当我运行[forms!formB.requery]时,我可以在access的右下角看到重新查询。因此,我相信VBA是正确的,只是与我如何设置表单或表格有关,或者是有问题。请再次尝试此操作,作为一个简单的测试:
Me.Refresh
。。您使用什么处理程序触发重新查询?@barker:在调用您的重新查询命令之前,您可能想尝试DBEngine.Idle dbRefreshCache-可能数据尚未刷新?如果所有其他操作都失败,则可能使用DoCmd.Requery而不是form.Requery。文档说明这需要更长的时间,但它会关闭并重新打开基础查询。不过,我不确定这是否会有实质性的区别。很高兴你能做到这一点。请问,你有没有找到关于这种行为的任何文件?希望对此做一些研究。谢谢。在MS文档中,如果省略了表达式指定的对象,则Requery方法会为具有焦点的窗体或控件重新查询基础数据源。如果具有焦点的控件具有记录源或行源,则将重新查询该控件;否则,控件的数据将被刷新。