Ms Access:来自另一个子表单的子表单重新查询未更新

Posted

技术标签:

【中文标题】Ms Access:来自另一个子表单的子表单重新查询未更新【英文标题】:MsAccess: Subform requery from another subform not updating 【发布时间】:2015-11-02 05:01:46 【问题描述】:

我有一个名为 frmMain 的表单,它有两个子表单。 frmUserRole 和 frmTraining。

frmUserRole 子表单有一个组合框,我用它的结果在查询中运行以在 frmTraining 子表单中生成训练结果,该子表单有一个名为 TrainingModule 的控件。

frmTraining 子表单有一个训练查询的记录源,正如我之前提到的,它有一个引用组合框值的字段。

活动

我有一个简单的 requery 事件连接到组合框中的 on-change 事件,逻辑是,如果您更改组合框中的值,那么新值将自动用于更新查询并使用 frmTraining 子表单填充新结果。

我用于组合框 on-change 事件的语法是

[Forms]![frmMain]!frmTraining.Form.Requery

没有发生什么

子表单未使用新的查询结果进行更新。

发生了什么。

如果我转到 frmTraining 子表单并按 F5 键,新值会出现,表明除了实际的重新查询之外一切都在运行。

如果我在 on-change 事件上放置一个 msgbox,它会被触发,所以我知道该事件会触发。

【问题讨论】:

【参考方案1】:

我没有用过你以前用过的语法。这是我之前使用的语法

Me![frmTraining].requery

还有

forms!frmMain.form![FrmTraining].requery.

编辑

我会将相关字段上的训练子表单查询条件设置为forms!frmMain![frmUserRole]![combobox].column(0)

然后我会在更新后的 frmUserRole 子表单组合框时重新查询 forms!frmMain.form!frmTraining.requery。我说afterUpdate 因为我相信onChange 可能存在问题

【讨论】:

感谢 LiamH。您的格式肯定更简洁,我想我应该养成引用当前对象而不是使用绝对引用的习惯,但是我知道我使用的格式仍然有效,所以还有一些其他问题导致重新查询不起作用.哦,我是从一个子表单引用的,所以我需要使用 Me.parent!controlName 不是吗(控件名称是 subform2)。 我重新阅读了您的问题,我想我完全理解您想要实现的目标。组合框字段叫什么? 利亚姆。调用 frmUserRole 子窗体中的组合框是 UserRole。我没有提到被调用的子窗体控件,它实际上是一个名为 Training Module 的文本框。我告诉你,如果这个网站可以允许附件,它会让事情变得更容易,但仍然感谢你和网站的帮助。 谢谢利亚姆。但这也不起作用。在花费了另外 2 个小时的大部分时间之后,我确实偶然发现了我只是不知道为什么的答案。如果我在重新查询后添加主表单刷新(在用户角色子表单中它可以工作。至少可以说这很奇怪。

以上是关于Ms Access:来自另一个子表单的子表单重新查询未更新的主要内容,如果未能解决你的问题,请参考以下文章

当从一个子调用但另一个子调用时添加控件的子工作

从 Access 中的另一个子窗体更改子窗体的记录源

在 MS Access 中使用子表单会降低性能吗?

子表单在 MS Access 中的主表单之前打开

循环访问 MS Access 子窗体并获取列可见性

鼠标滚动 1 个主窗体和 2 个子窗体 MS ACCESS