Accessのフォームでフィルターを実行した後、そのフィルターのデータをそのままレポートへ出力する方法です。
分割フォームの作成
テーブルやクエリを元に分割フォームを作成します。
ここでは、クエリ[Q_売上]を元に分割フォームを作成しています。
クエリ[Q_売上]を選択して、[作成]タブの[フォーム]グループにある[その他のフォーム]の▼ボタンをクリックします。
その中にある[分割フォーム]をクリックします。
ポップヒントには以下のように記されています。
注意ポップヒントでは上にデータシート、下にフォームが表示されるように記されていますが、上下が反対になる場合もあります。
分割フォーム
分割フォームを作成します。分割フォームの上のセクションにはデータシートが表示され、下のセクションにはデータシートで選択したレコードの情報を入力するためのフォームが表示されます。
分割フォームは、Access2007からの機能ですがフォームビューとデータシートビューを同時に表示できるので、とても便利です。
分割フォームについては、以下の記事を参照してください。
-
分割フォーム(単票フォームとデータシートを同時に表示)の作成と使い方
Accessでは、画面を2つに分け[単票フォーム]と[データシート]を同時に表示できる[分割フォーム]というのがあります。Access200 ...
分割フォームでは、データシートビューのプルダウンからフィルターをかけることができます。
このフィルターで抽出したデータを、そのままレポートへ出力する方法を解説します。
フィルターボタンをクリックしてもリストが表示されない場合
レコード数が1000を超えているとフィルターボタンをクリックしても、リストが表示されない場合があります。
これは、[Accessのオプション]で設定を変更して解決できます。
[ファイル]タブをクリックした後、[オプション]をクリックして、[Accessのオプション]ダイアログボックスを表示します。
[現在のデータベース]の[レコード数が次の値を超えるとリストを表示しない]が既定では[1,000]になっていますので、この値をレコード数より大きい数値に変更します。
以下の記事でも解説しています。
レポートの作成
レポートは、フォームと同じレコードソースで作成しておきます。
レポートの名前は[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
これで実行してみてください。
フィルターを実行していないときは、下のようにメッセージウィンドウが表示されます。
参考レポートでレコードを抽出して印刷する方法については、以下の記事で解説しています。
-
レポートのレコードを抽出して印刷
Accessのレポートでフィルターをかけて、一部の情報のみを印刷したいことがあると思います。 レポートのフィルターを実行するには、レポートビ ...