问题描述
|
我在主窗体上有2个子窗体。 Sub_2在列表中显示在sub_1中选择的项目的详细信息。对于这两个子表单,我都使用continue表单,它们被限制为2个查询,并且有一个共同的字段,即“ 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会自动执行重新查询。
解决方法
您不需要对filter属性做任何事情。
在第一个子窗体上,设置“链接主字段”和“链接子字段”属性,就像对表单上的常规单个子窗体控件一样。
对于第二个子窗体,还应像设置常规的单个子窗体控件一样设置“链接子字段”属性。链接主字段属性将引用第一个子窗体的控件名称:[子窗体1控件名称]!FieldName。
在第一个子窗体控件的OnCurrent事件中,添加以下VBA代码行:
Me.Parent.Controls![Subform 2 Control Name].Requery
运行表格。当您单击第一个子窗体中的一行时,第二个子窗体将重新查询以显示在第一个子窗体中选择的行的子行。
,分配过滤器表达式后,将FilterOn属性设置为True。
Me.Parent.sub_2.Form.Filter = \"id=\" & \"\'\" & Me.Recordset!id & \"\'\"
Me.Parent.sub_2.Form.FilterOn = True
,您将需要以下内容:
Me!Subform2.Form.Requery
\'or
Forms!Mainform!Subform1.Form!Subform2.Form.Requery
我没有时间进行测试,所以我无法确定到底Subform1和Subform2是实际子窗体的名称还是仅仅是Subform控件/容器的名称。我认为是后者。
这是这些问题的绝佳来源:
http://access.mvps.org/access/forms/frm0031.htm
我对该页面的唯一抱怨是,它们不涉及调用方法,子/函数或引用公共变量。所有这些都(或可能)与此处列出的方案略有不同。