【问题标题】: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 进行过滤,我不确定这是将其应用于报告的正确方法。

【问题讨论】:

    标签: ms-access 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 // 报告打开了,但没有过滤。
      • 然后将过滤器应用于报告。
      • 完美运行。我错过了您原始帖子的最后一行。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-20
      • 1970-01-01
      相关资源
      最近更新 更多