我有一个表单,它允许用户通过一些组合框编辑过滤器的属性,然后打开一个报告。报告以
DoCmd.OpenReport rptName, acViewReport, , whereClause, acWindowNormal
'whereClause = "Building = '005'" for instance
一些报告可以正常打开,我的意思是它们填充了过滤后的信息。然而,其他人,即使它们基于相同的内部模板,也忽略过滤器并显示基于所有数据(而不是过滤数据)的报告。
为什么报告会忽略过滤器?当我在使用表单打开报告后以设计模式编辑报告时:
Working Report | Non Working Report
Filter: Building = '005' | Filter:
Filter On Load: No | Filter On Load: No
什么可能导致非工作报告不注册过滤器参数?这些报告中没有 On Load VBA,也没有任何 VBA(导出到 PDF 和每个报告的复制粘贴关闭按钮除外)。
编辑 之前应该检查过,无论驱动报告的查询是否为空,都会发生这种情况(即过滤器永远不会应用于某些报告,无论是否为空白)
不确定代码是否有帮助,但是:
Private Sub btnOpenSummary_Click()
If IsNull(Me.cboSummary) Then
MsgBox "Please select a building for the SUMMARY report."
Exit Sub
End If
strCrit = "Building = '" & Me.cboSummary & "'"
MsgBox strCrit
survArray = getSurveyArray()
For Each Survey In survArray
DoCmd.OpenReport Survey, acViewReport, , strCrit, acWindowNormal
Next Survey
DoCmd.OpenReport "Total Summary", acViewReport, , , , Me.cboSummary
End Sub