まりふのひと

Access/レポートを開く時、以前のフィルターが残ってしまう

FE社との約束の忘れ、催促の電話があり慌てて出かけた。
「帳票が数ページ出るはずなのに1ページしか出ない」と言う...
トレースすると、次のコードの 1〜2 が効いていないようだ。

1.    If strWhere = "" Then
2.        DoCmd.OpenReport reportName, intView
3.    Else
4.        DoCmd.OpenReport reportName, intView, , strWhere
5.    End If
6.    BOOLAns = Zoom_Report()
7.    Do While Is_ReportLoaded(reportName): DoEvents: Loop
  • ヘルプの確認
    OpenReport メソッド

     関連項目対象使用例アプリケーション情報Visual Basic で "OpenReport/レポートを開く" アクションを実行します。

    expression.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)
  • 1〜4 を 4 のみに書き換えても効果ない。以前使った WhereCondition が残ってしまう...

先方のパソコンがノート型でマウスもない。プリンターも使い難いので、USB にコピーし持ち帰った。

  • 自宅のソースとバージョンは同じだ。
  • 上記 1〜5 を試行錯誤し、次のように書き換えたら、上手くいった。
    If strWhere = "" Then
        Me.FilterOn = False
        DoCmd.OpenReport reportName, intView
    Else
        Me.FilterOn = True
        DoCmd.OpenReport reportName, intView, , strWhere
    End If

しかし、何故これで上手くゆくのか解らない‥‥
Me.FilterOn の Me は何を指すのだろうか? もう少し、試行錯誤してみる必要がある...