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

dar*_*kjh 4 ms-access vba subform

我在主窗体上有 2 个子窗体。Sub_2 在列表中显示在 sub_1 中选择的项目的详细信息。对于这两个子表单,我使用 continue 表单,它们被限制为 2 个查询,有一个公共字段,比如“id”。

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

Me.Parent.sub_2.Form.Filter = "id=" & "'" & Me.Recordset!id & "'"
Run Code Online (Sandbox Code Playgroud)

然后重新查询

Me.Parent.sub_2.Form.Requery
Run Code Online (Sandbox Code Playgroud)

但是没有运气,当我双击 sub_1 中的记录时,sub_2 中没有变化。我看过相关问题,我认为这应该有效......

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

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

编辑:

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

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

Joh*_* Mo 5

您不需要对 filter 属性执行任何操作。

在第一个子窗体上,设置 Link Master Fields 和 Link Child Fields 属性,就像在窗体上设置常规的单个子窗体控件一样。

对于第二个子窗体,也像设置常规的单个子窗体控件一样设置 Link Child Fields 属性。Link Master Fields 属性将引用第一个子表单的控件名称:[Subform 1 Control Name]!FieldName。

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

Me.Parent.Controls![Subform 2 Control Name].Requery
Run Code Online (Sandbox Code Playgroud)

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