首页 > 解决方案 > 如何在 Microsoft Access 中刷新子窗体的内容?

问题描述

我的数据库中有 4 个查询,每次重新运行查询(通过按钮)时刷新表单的内容,我让 vba 关闭并重新打开表单。这以前有效,但现在我决定将我的报告嵌入到我的查询表单(位于导航控制元素内)中,所以这种方法不起作用。我无法找到适用于此设置的“刷新”方法。我尝试了 Requery 方法,但它没有更新我的表单。这是我所拥有的:

背景资料:

当我单击“运行查询”按钮时运行的代码:

Forms!MainMenu!NavigationSubform.Form!rpt_equipment_at_location.Requery

我也试过这个,但它做同样的事情:

Me.rpt_equipment_at_location.Requery

单击我的“运行查询”按钮后的 rpt_equipment_at_location 报告

单击“运行查询”按钮后,与我的 *equipment_at_location 表单中的子报告相同的 rpt_equipment_at_location 报告

我知道路径是正确的,因为此代码会导致表单“闪烁”(好像表单已刷新),但表单并未使用查询的当前信息进行更新。如果我打开 rpt_equipment_at_location 链接的父表单,所有信息都会在每次运行查询时更新并准确更改,但该表单不会以这种方式表示为我的导航控制表单中的子表单。它只显示一条记录,当我重新查询时,该表单要么没有更改,要么变为空白。我的链接字段已填充,所以当其链接到的表单更新时,rpt_equipment_at_location 子表单不应该更新吗?

让我知道是否需要清理任何东西。我将不胜感激任何帮助!

标签: vbams-access

解决方案


我让它工作了!我不完全确定发生了什么,但我会尽力解释以防其他人发生这种情况:

重要的是要注意我的报告是基于查询的,所以当我将它放入我的表单(拖放)时,它应该提示我输入我在该查询的 SQL 代码中调用的某些值(它引用了其他数据元素以各种形式),但自从我进入设计视图以来就没有。当我切换到布局视图并将子报表放入其中时,它提示我输入这些值,这些值初始化了最初在表单中显示的记录。在表单中预先初始化了我的所有记录后,Requery 代码就起作用了。

对不起,如果这没有意义。我不确定为什么 Access 会是这样,或者为什么这在设计视图中不起作用,但这对我有用。


推荐阅读