使用数组过滤器打开报表
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 ----------------------------------------------------+----------------------+
【讨论】:
感谢李的帮助!这让我抓狂:)以上是关于使用数组过滤器打开报表的主要内容,如果未能解决你的问题,请参考以下文章
MS.Access - 在 DoCmd.OpenReport [where 条件] 中使用 2 个过滤条件从表单打印报表