在一个子窗体中的控件上使用 AfterUpdate 事件来重新查询另一个子窗体中的控件

Posted

技术标签:

【中文标题】在一个子窗体中的控件上使用 AfterUpdate 事件来重新查询另一个子窗体中的控件【英文标题】:Using AfterUpdate event on a control in one subform to requery a control on another subform 【发布时间】:2017-08-10 18:24:47 【问题描述】:

我有一个使用本机导航表单界面功能设置的 Access 2010 数据库。

使用this very helpful table,我已经能够在多个场合使用vba 来引用整个数据库中的表单。但是,我似乎在这一个实例中遇到了困难。

导航表单上,我有许多主要标签。单击其中一个主选项卡会弹出许多子选项卡,这些子选项卡附有各种表单。

在其中一个子选项卡上,我附加了一个主表单 (ma​​in)。该主窗体中有一个子窗体 (subform1),其中包含一个控件文本框 (control1)。在 subform1 中有另一个表单 (subform2) 包含一个未绑定的文本框 (control2),显示使用 TempVar 计算的值

我想使用 control1 上的 AfterUpdate 事件来requery subform2 以更新计算control2,或者只是 requery control2

control1AfterUpdate 事件使用 Refresh 和/或 Requery 不会对 做任何事情>控制2

目前我在 subform2 上有一个按钮,用户可以单击该按钮刷新表单并更新 control2 中的值。用户还可以点击F5刷新所有表单,结果相同。

我的目标是取消手动操作,让 control1AfterUpdate 事件更新 control2

任何帮助都将不胜感激,因为我无法在网上找到任何有效的东西,而且我已经为这个问题苦苦挣扎了一个多月了。

**** UPDATE **** 我没有正确描述我的表单布局。 subform1subform2 实际上都嵌套在 ma​​in 下。 subform2 NOT 嵌套在 subform1 下,正如我最初在上面描述的那样。

【问题讨论】:

据我了解导航表单,一次只有一个子表单处于活动状态且可用。查看此讨论accessforums.net/showthread.php?t=32053。我改用 Tab 控件。 我同意选项卡控件是这里的方式。如果您因为性能较低而避免使用它,请查看this thread。如果性能不是问题,选项卡控件会更灵活。 感谢你们两位的快速回复。我已经浏览了您提供的链接,并尝试了一些建议,但无济于事。 RE:选项卡控件,不幸的是,我对项目的了解很远,不想将所有内容迁移到选项卡控件界面中。我还必须重新测试所有内容。这个特殊的问题是不值得的......我也喜欢导航表单的外观。话虽这么说,如果有人有任何进一步的补充,请这样做。我将离开几天,所以我的不回复并不代表任何人的意见。我回来后会进一步探索 June 的链接。 已经对导航控件进行了更多挖掘,并且在切换选项卡时应该重新查询整个子表单(在 Access 2016 中测试,仅加载活动子表单,并在您导航到时立即卸载另一个子。因此,不需要重新查询另一个子上的控件。你能指定确切的问题吗? 对不起,我没有早点回来。我回来后有一些更紧迫的事情。 @Erik,您是正确的,子表单在切换选项卡时应该重新查询,但是我希望 control2 在 control1 更新时重新查询。切换标签比我目前的解决方案更有效。我猜如果我对问题的描述最初是正确的,我就不会遇到问题。我已经更新了我的问题,因为我意识到我发布了不准确的信息。此更新可能更有意义。我很抱歉。 【参考方案1】:

哇。现在我觉得自己像个白痴。使用我上面提供的更新再次解决我的问题让我能够解决它。

我需要做的就是以这种方式引用 subform2 来重新查询它:

[Forms]![HOME]![NavigationSubform].[Form]![subform2].[Form].Requery

其中“HOME”是我的导航表单的名称。

对于没有重命名导航表单的相同问题的任何人,我相信语法是:

[Forms]![导航表单]![NavigationSubform].[Form]![subform2].[Form].Requery

感谢@Erik von Asmuth 和@June7 的耐心和帮助。

【讨论】:

以上是关于在一个子窗体中的控件上使用 AfterUpdate 事件来重新查询另一个子窗体中的控件的主要内容,如果未能解决你的问题,请参考以下文章

如何从位于访问中的另一个子窗体中的组合框中过滤子窗体?

子窗体中的子窗体控件

访问组合框和子窗体

访问子窗体未绑定控件#Error

通过将焦点设置到子窗体中的控件来隐藏焦点控件

如何跨线程调用Windows窗体控件