VBAを使用してレポートのコンテンツを動的に読み込み、作成したコントロールパネルフォームから選択したレポートに応じて、クエリがフィルタされる可能性があります。私はこれらの行をコメントアウトしていた、とコメント解除する場合、それらは、これが「doesnのことを発見 - 私はこのプロジェクトを始めたとき、これは働いていた、今Access 2007 VBA - レポートが再ロードされるまで、レポートフィルタは機能しません。
Private Sub Report_Open(Cancel As Integer)
Me.Filter = "VIP=True"
Me.FilterOnLoad = True
:私のReport_Open関数の先頭に
、私はこれを持っていますもう正しく動作します。レポートの読み込み時にフィルタを適用する代わりに、フィルタを動作させるためにレポートを再ロードする必要があります。印刷プレビューに切り替えてレポートビューに戻すか、デザインビューに切り替えてからレポートビューに戻す必要がありますデザインビューでは、選択したフィルタがプロパティペインに表示されます)。
私は、ユーザーがPDFを表示したり、PDFにエクスポートしたり、印刷プレビューで開くことができるコマンドボタンを使用してレポートを読み込んでいます。これらのコマンドのいずれも、フィルタを適用してレポートを開くことはありません。リロードする必要があります。
私はレポートをロードするために使用しているコマンドは、参考のために、以下のとおりです。
If (Action = "View") Then
DoCmd.OpenReport "Test", acViewReport
ElseIf (Action = "PDF") Then
DoCmd.OutputTo acOutputReport, "Test", acFormatPDF
ElseIf (Action = "Print") Then
DoCmd.OpenReport "Test", acViewPreview
End If
[OK]を、私は、Me.Filter
とMe.FilterOnLoad
は仕事をしない理由は分からないすべてのものから以来、I MSDNなどで見てきましたが、うまくいくはずです。それは言われて、私は私が代わりにDoCmd.ApplyFilter
を使用できることを考え出し:
'Check if VIP - add filter if necessary
If (getGlobal(1) = True) Then
DoCmd.ApplyFilter , "VIP = True"
End If
誰がどんな考えを持っている場合、私はまだ、他の方法は非常に奇妙な行動をされた理由を知りたいのですが...
または、OnOpenイベントで実行しているため、完全なWHERE句でRecordsourceを設定できます。 OnOpenイベントでコードを書いているのであれば、フィルターのプロパティではなくRecordsourceを使うつもりです。 –