ms-access - 从另一个子表单重新查询子表单,问题

标签 ms-access vba subform

我在主窗体上有 2 个子窗体。 Sub_2 在列表中显示在 sub_1 中选择的项目的详细信息。对于这两种子表单,我都使用 continue 表单,并且它们绑定(bind)到 2 个查询,其中有一个公共(public)字段,例如“id”。

我所做的是在 sub_1 的 DClick 事件中添加代码以设置 sub_2 的过滤器,例如

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"

然后重新查询

Me.Parent.sub_2.Form.Requery

但不幸的是,当我双击 sub_1 中的记录时,sub_2 中没有任何变化。我查看了相关问题,我认为这应该可行......

有什么建议吗?也许我应该使用其他方法来做到这一点?

PS:我确定 Me.Parent.sub_2.Filter 已更改,但重新查询不起作用。

编辑:

感谢您的回答。我发现问题所在,就是查询中存在“id”字段,但在子表单上没有显示,所以可能Access无法使用它。

当过滤器发生更改时,Access 会自动重新查询。

最佳答案

您不需要对过滤器属性执行任何操作。

在第一个子窗体上,设置“链接主字段”和“链接子字段”属性,就像在窗体上设置常规的单个子窗体控件一样。

对于第二个子表单,还可以像设置常规的单个子表单控件一样设置“链接子字段”属性。链接主字段属性将引用第一个子窗体的控件名称:[子窗体 1 控件名称]!FieldName。

在第一个子窗体控件的 OnCurrent 事件中,添加以下 VBA 代码行:

Me.Parent.Controls![Subform 2 Control Name].Requery

运行表单。当您单击第一个子窗体中的行时,第二个子窗体将重新查询以显示第一个子窗体中所选行的子行。

关于ms-access - 从另一个子表单重新查询子表单,问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6015229/

相关文章:

sql - 在表单内的Access中的三个子表单中显示基于相同ID的记录

sql - MS-Access:相互合并两个表 "below"

ms-access - 从不同的数据库获取表单、控件和属性数据

vb.net - OleDbCommandBuilder 生成的 INSERT INTO 语句中存在语法错误

VBA - 我想删除单元格顶部的按钮 - 扫雷游戏

ms-access - 将记录集导出到电子表格

ms-access - 使用参数的存储过程

vba - 在过滤器中使用 "Or"

MySQL 相当于 LIKE '*'