对子表单应用过滤器并根据过滤器打开报表
Posted
技术标签:
【中文标题】对子表单应用过滤器并根据过滤器打开报表【英文标题】:Apply filter on subform and open a report based on the filter 【发布时间】:2016-04-02 14:01:09 【问题描述】:我有一个允许用户为“ACFTsn”选择一个值的子表单我想将过滤器应用于名为“日志”的表格,其中“sn”(表格上的字段)= ACFTsn 以下是附加到子窗体上的一个按钮
Me.Form.Filter = "table![Logbook].SN=me.ACFTsn"
Me.FilterOn = True
DoCmd.openreport "logbook", acViewReport, Filter
当我单步执行代码时,我收到错误 3071/表达式键入错误或太复杂而无法评估。
我确信存在语法错误,因为这是我第一次尝试使用 VBA 进行过滤,我不确定这是将其应用于报告的正确方法。
【问题讨论】:
【参考方案1】:或者,您可以使用ApplyFilter 方法甚至SetFilter(对于 MS Access 2010+):
Dim strfilter As String
strfilter = "[SN] = '" & Me!ACFTsn.Value & "'"
DoCmd.ApplyFilter , strfilter ' FILTERS FORM
DoCmd.OpenReport "logbook", acViewReport, strfilter ' FILTERS REPORT
【讨论】:
【参考方案2】:应该就是这么简单:
Me.Filter = "[SN] = '" & Me!ACFTsn.Value & "'"
Me.FilterOn = True
如果 SN 不是字符串:
Me.Filter = "[SN] = " & Me!ACFTsn.Value & ""
Me.FilterOn = True
要对报告应用相同的过滤器:
DoCmd.openreport "logbook", acViewReport, , Me.Filter
【讨论】:
我粘贴了前两行,后面跟着: DoCmd.openreport "Logbook", acViewReport // 报告打开了,但没有过滤。 然后将过滤器应用于报告。 完美运行。我错过了您原始帖子的最后一行。以上是关于对子表单应用过滤器并根据过滤器打开报表的主要内容,如果未能解决你的问题,请参考以下文章
MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表