ユーザーがいくつかのコンボボックスを介してフィルターのプロパティを編集し、レポートを開くことができるフォームがあります。レポートはで開かれます
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