我在主窗体上有 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/