Access打开带多子窗体的主窗体时如何为指定子窗体设置筛选条件
Access为打开的主窗体下指定子窗体单独设置筛选条件的实现方法
DoCmd.OpenForm的whereCondition参数仅作用于主窗体的记录源,没有直接给子窗体传筛选条件的参数语法,你可以通过打开主窗体后主动赋值子窗体的筛选属性实现需求。
修改后的完整实现代码如下:
dtmFrom = Text56.Value 'start date dtmTo = Text58.Value 'end date Dim strCriteria As String strCriteria = "[note_date] >= #" & Format(dtmFrom, "yyyy-mm-dd") & "# AND [note_date] <= #" & Format(dtmTo, "yyyy-mm-dd") & "#" ' 第一步:先打开目标主窗体,不需要带where条件 DoCmd.OpenForm "Overview_of_vacation_notes" ' 第二步:给指定子窗体设置筛选条件并启用筛选 ' 注意此处将【你主窗体上的子窗体控件名】替换为你实际主窗体里放子窗体的那个控件的名称 Forms!Overview_of_vacation_notes![你主窗体上的子窗体控件名].Form.Filter = strCriteria Forms!Overview_of_vacation_notes![你主窗体上的子窗体控件名].Form.FilterOn = True
注意事项
- 代码中的
你主窗体上的子窗体控件名需要替换为实际值:该名称是主窗体设计视图中,放置子窗体的容器控件的名称,和子窗体本身的文件名称可能不一致,可以在主窗体设计视图选中子窗体控件,在属性表的「名称」字段查看确认。 - 如果需要关闭筛选,只需将对应子窗体的
FilterOn属性设置为False即可。 - 日期格式化使用
yyyy-mm-dd可以避免不同区域日期格式差异导致的筛选逻辑错误,不需要修改。
内容的提问来源于stack exchange,提问作者jenshon
相关产品推荐
相关产品推荐

