使用数组过滤器打开报表

Posted

技术标签:

【中文标题】使用数组过滤器打开报表【英文标题】:Opening Report with Filter from Array 【发布时间】:2019-08-30 22:53:05 【问题描述】:

我正在尝试根据从数据库中提取的数组中的公司名称打开报告。当我尝试在 DoCmd.OpenReport 中应用 where 条件时,它会打开一个文本框,而不是我提供给它的公司名称。如果我在文本框中输入公司名称,它将过滤该输入。

我怎样才能让它在 where 条件和没有用户输入的情况下打开?

我的最终目标是将每个公司的报告打印为 PDF,这就是我使用数组而不是用户输入或固定值的原因。

Abbvie 数组中第一家公司的示例文本框

 Sub recordfilter()

      Dim myRecordset As ADODB.Recordset
      Set myRecordset = New ADODB.Recordset

       'point to the currently loaded database and pull company names
      myRecordset.ActiveConnection = CurrentProject.Connection

      strSQL = "Select DISTINCT [CORP ID] FROM backlog"
      myRecordset.Open strSQL
      Dim i As Integer
      i = 0
      Do Until myRecordset.EOF
        i = i + 1
        myRecordset.MoveNext
      Loop
      Dim myarray()
      myRecordset.MoveFirst
      myarray = myRecordset.GetRows(, , "CORP ID")

      'Will be in loop with print command once completed
      DoCmd.OpenReport "SalesOrder_Query_Filter", acViewPreview, , "[CORP ID] = " & myarray(0, 0)


  End Sub

【问题讨论】:

【参考方案1】:

由于[CORP ID] 字段是字符串值,因此条件需要用单引号或双引号括起来,例如:

DoCmd.OpenReport "SalesOrder_Query_Filter", acViewPreview, , "[CORP ID] = '" & myarray(0, 0) & "'"
'                                                                         ^                     ^
'                                                                         |                     |
' Added single quotes ----------------------------------------------------+---------------------+

或者:

DoCmd.OpenReport "SalesOrder_Query_Filter", acViewPreview, , "[CORP ID] = """ & myarray(0, 0) & """"
'                                                                         ^                      ^
'                                                                         |                      |
' Added double quotes ----------------------------------------------------+----------------------+

【讨论】:

感谢李的帮助!这让我抓狂:)

以上是关于使用数组过滤器打开报表的主要内容,如果未能解决你的问题,请参考以下文章

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

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

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

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

使用“大于”的数据透视表的报表过滤器

在 Oracle APEX 交互式报表中更新与过滤器相关的页面项目