在子窗体上应用过滤器并根据过滤器打开报告

时间:2016-04-02 14:01:09

标签: vba ms-access access-vba

我有一个允许用户为“ACFTsn”选择值的子表单我想对名为“Logbook”的表应用过滤器,其中“sn”(表中的字段)= ACFTsn 以下内容附加到子表单上的按钮

Me.Form.Filter = "table![Logbook].SN=me.ACFTsn"
Me.FilterOn = True
DoCmd.openreport "logbook", acViewReport, Filter 

当我单步执行代码时,我收到的错误3071 /表达式输入不正确或太复杂而无法评估。

我确信存在语法错误,因为这是我第一次使用VBA过滤器,我不确定这是将它应用于报告的正确方法。

2 个答案:

答案 0 :(得分:2)

或者,您可以使用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 

答案 1 :(得分:1)

应该这么简单:

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