Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。
分割フォームの作成
テーブルやクエリを元に分割フォームを作成します。ここでは、クエリ[Q_売上]を元に分割フォームを作成しています。クエリ[Q_売上]を選択して、[作成]タブの[フォーム]グループにある[その他のフォーム]の▼ボタンをクリックします。その中にある[分割フォーム]をクリックします。
ポップヒントには以下のように記されています。注意ポップヒントの「上のセクション」は「下のセクション」、「下のセクション」は「上のセクション」の間違いだと思います。プロパティで上下を反対にすることはできますが、既定では下がデータシートビューとなっています。
分割フォームを作成します。分割フォームの上のセクションにはデータシートが表示され、下のセクションにはデータシートで選択したレコードの情報を入力するためのフォームが表示されます。
分割フォームは、Access2007からの機能ですがフォームビューとデータシートビューを同時に表示できるので、とても便利です。分割フォームについては、以下の記事を参照してください。
分割フォームを作成する - Access(Microsoft)
分割フォームでは、データシートビューのプルダウンからフィルターをかけることができます。このフィルターで抽出したデータを、そのままレポートへ出力する方法を解説します。
レポートの作成
レポートは、フォームと同じレコードソースで作成しておきます。レポートの名前は[R_売上一覧]とします。
レポートへ出力ボタンの作成
フィルター実行後、レポートへ出力するためのボタンを作成します。
フォームをデザインビューで開きます。[デザイン]タブにある[コントロールグループ]にある[ボタン]をクリックして、フォームヘッダーでドラッグしてボタンを作成します。ウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。
コマンドボタンのプロパティを表示します。[すべて]タブをクリックして、コマンドボタンの名前と標題を入力します。
[イベント]タブをクリックして、[クリック時]の[...]ボタンをクリックします。
[ビルダーの選択]ダイアログボックスが表示されたら、[コードビルダー]を選択して[OK]ボタンをクリックします。
VBEが表示されたら、以下のように入力します。フィルターを実行していないときは、「先にフィルターを実行してください!」というメッセージボックスを表示して、それ以外は、レポート[R_売上一覧]のレポートプレビューとして出力します。参考印刷プレビューで表示したい場合は、[acViewPeport]を[acPreview]に変えてください。
If Me.FilterOn = False Then
MsgBox "先にフィルターを実行してください!"
Else
DoCmd.OpenReport "R_売上一覧", acViewReport, , Me.Filter
End If
フィルター解除ボタンの作成
もう一つフィルターを解除するためのボタンを作成します。
同じように[デザイン]タブにある[コントロールグループ]にある[ボタン]をクリックして、フォームヘッダーでドラッグしてボタンを作成します。ウィザードが表示されたら[キャンセル]ボタンをクリックして閉じます。
コマンドボタンのプロパティを表示します。[すべて]タブをクリックして、コマンドボタンの名前と標題を入力します。
[イベント]タブをクリックして、[クリック時]の[...]ボタンをクリックします。[ビルダーの選択]ダイアログボックスが表示されたら、[コードビルダー]を選択して[OK]ボタンをクリックします。今度は、以下のように入力します。
Me.FilterOn = False
これで実行してみてください。フィルターを実行していないときは、下のようにメッセージウィンドウが表示されます。
参考Officeのバージョンによって操作が異なる場合があります。以下の記事で、お使いのOfficeのバージョンを確認する方法を解説しています。
-
Office(Word、Excel、PowerPointなど)のバージョンを確認する方法
Microsoft Officeも時を得て、大きく様変わりしてきました。トラブルを解決しようとするとき、あるいは、何かの操作を探すときなど、 ...