使用 VBA 未打开表单时在访问中更新表单

Posted

技术标签:

【中文标题】使用 VBA 未打开表单时在访问中更新表单【英文标题】:Update form in access when form is not open using VBA 【发布时间】:2017-05-09 20:30:59 【问题描述】:

我在 Access 中开发了一个表单,允许用户搜索与其参数匹配的记录。该表单有大约五个组合框,其中包含用户可以搜索的值。设置了一个从组合框中提取值的查询。关联的表单“F_FilterResults”将查询结果列为显示搜索结果的数据表。我在“F_FilterResults”上的每个组合框上创建了一个 AfterUpdate 事件,以便在使用搜索参数更新组合框后,查询和表单会自行刷新。以下是“F_FilterResults”组合框中的 AfterUpdate 事件的一些示例代码。

Private Sub CompanyState_AfterUpdate()
Forms![F_FilterResults].Requery
Forms![F_FilterResults].Refresh
End Sub

这仅在“F_FilterResults”表单打开时才有效。当它关闭时,我收到运行时错误“2450”消息,指示“Microsoft Access 找不到引用的表单 'F_Filter。”当“F_Filter”表单未打开时,如何运行此代码?注意我不希望表单在您从组合框中选择搜索参数后立即打开,因为用户可能希望将更多搜索参数添加到另一个组合框。如果我编程“F_FilterResults”以在加载搜索表单时打开,用户可能会 X 出它并且不知道错误消息的含义。

【问题讨论】:

您到底想要它做什么?您不能刷新/重新查询已关闭的表单(因为它在加载时被重新查询/刷新是没有意义的)。 我从不使用动态参数化查询。在表单打开时将过滤条件应用于表单。评论allenbrowne.com/ser-62.html 【参考方案1】:

您可以打开隐藏的表单。这就是“简单”的答案。然而,这样做的需要意味着实现结果的方式并不是最好的。

我这样做的方式是,我不会更新从组合框中提取值的表单,而是生成一个字符串,该字符串可以在打开表单时用作过滤器。

【讨论】:

以上是关于使用 VBA 未打开表单时在访问中更新表单的主要内容,如果未能解决你的问题,请参考以下文章

使用表单和子表单访问 VBA 代码格式更新表

访问 VBA:如何在表单中获取输入并在查询中使用它们

使用导航表单时在 DoCmd.SearchForRecord 中引用表单 - 访问

从一个未绑定的表单 vba 访问添加多条记录

访问当前记录上的 VBA 打开表单

访问 VBA 防止在关闭时输入表单记录