【问题标题】:How do I refresh the contents of a subform in Microsoft Access?如何在 Microsoft Access 中刷新子窗体的内容?
【发布时间】:2021-10-26 19:54:44
【问题描述】:

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

背景信息:

  • 主窗体 = MainMenu
  • 导航控制元素 = NavigationSubform
  • 我放入 NavigationSubform = *equipment_at_location 的表单
  • *equipment_at_location 中的子表单(我想“刷新”)= rpt_equipment_at_location

点击“运行查询”按钮时运行的代码:

Forms!MainMenu!NavigationSubform.Form!rpt_equipment_at_location.Requery

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

Me.rpt_equipment_at_location.Requery

rpt_equipment_at_location report after clicking my "run query" button

Same rpt_equipment_at_location report as a subreport inside my *equipment_at_location form after clicking my "run query" button

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

如果我需要清理任何东西,请告诉我。非常感谢任何帮助!

【问题讨论】:

  • 可能你需要:Forms!MainMenu!NavigationSubform.Form!rpt_equipment_at_location.Report.Requery
  • 嗯,我刚试过,它做了同样的事情。我认为问题不在于找到对象的代码。它在我的表单上运行命令,但表单没有更新。
  • 知道了!!!将用我所做的更新我的问题。

标签: vba ms-access


【解决方案1】:

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

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

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

【讨论】:

  • Access 是使用 VBA 编程的最容易出错的办公程序之一。我会定期保存并关闭我正在处理的数据库,备份副本,然后重新打开数据库。访问数据库也很容易损坏,因此您最终可能会得到一个无法正常工作的数据库。定期进行备份,可以重新加载较旧的备份,然后重试。
猜你喜欢
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 2014-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多