对子表单应用过滤器并根据过滤器打开报表

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 // 报告打开了,但没有过滤。 然后将过滤器应用于报告。 完美运行。我错过了您原始帖子的最后一行。

以上是关于对子表单应用过滤器并根据过滤器打开报表的主要内容,如果未能解决你的问题,请参考以下文章

在多个字段的 Access 筛选中打开报表

使用数据表表单过滤器过滤报告

jasperreport怎么调用子报表,在页面上显示

MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表

管理申报表和结果页面的最佳方式

汇总报表过滤框触发带字段