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 会自动重新查询。
您不需要对 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)
运行表单。当您单击第一个子窗体中的一行时,第二个子窗体将重新查询以显示第一个子窗体中所选行的子行。