1つのテーブルから、クエリを作成してデータを抽出することはよくあります。
そのクエリをもとにレポートを作成するとき、レポートのレコードソースでテーブルやクエリを指定します。
複数のクエリを作成してレポートを作成する場合、レポートのレイアウトがまったく同じであれば、フォームで表示したい内容(クエリ)を指定してレポートのレコードソースを切り替えることができます。
オブジェクトを増やしたくないというときは、おすすめです。
また、ここでは、クエリをもとにしたレポートで解説していますが、フォームの場合も同じように設定できます。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
テーブルの確認
サンプルとして以下のようなテーブルを使います。
社員情報として、勤務先が東京都と大阪府で分けて印刷したいとします。
クエリの作成
テーブル[T_社員]をもとに、クエリ[Q_東京]を作成します。
以下は、[勤務先]が[東京都]のレコードを抽出するクエリのデザインビューです。
[抽出条件]に[東京都]を指定しています。
テーブルの[趣味]フィールドは不要なので、追加していません。
同じように大阪のクエリ[Q_ 大阪]を作成します。
すべてのレコードも印刷できるように、クエリ[Q_全社員]も作成します。
[趣味]フィールドのみ追加していません。
レポートの作成
クエリをもとにレポートを作成します。
クエリ[Q_全社員]を選択して、[作成]タブの[レポート]グループにある[レポート]クリックして作成します。
ほかの方法でも構いません。ウィザードを使用して作成する方法は、以下の記事で解説しています。
-
レポートウィザードを使って表形式のレポートを作成
Accessのテーブルやクエリを基にレポートウィザードを使用してレポートを作成することができます。 ウィザードで作成した後、より見やすいレポ ...
レイアウトビューのまま、コントロールの幅などを調整して、レポートの[標題]などは、プロパティで変更します。
[デザイン]タブの[ツール]グループにある[プロパティシート]をクリックします。
プロパティは、キーボードから[F4]キーを押しても表示できます。
選択の種類が[レポート]になっていることを確認して[書式]タブの[標題]で変更します。
[R_社員]という名前を付けて保存します。
レポートのレコードソース
レポート[R_社員]をデザインビューで開いて、レポートのプロパティを表示します。
[データ]タブの[レコードソース]を確認すると、[Q_全社員]になっていると思います。
このプロパティの[レコードソース]を変更することで、レポートの内容を変更できるわけです。
[レコードソース]の▼ボタンをクリックすると、作成済みのテーブルやクエリの情報が表示されると思います。
レポートのレイアウトが同じであれば、このレコードソースを切り替えるだけで、表示する内容を変更できます。
ここでは、そのレポートのレコードソースの内容をフォームから指定しようとするものです。
フォームにオプショングループを作成
ここでは、[作成]タブの[フォーム]グループにある[空白のフォーム]をクリックして、空白のフォームを作成します。
ここでは、コントロールウィザードを使用して作成します。
オプショングループの作成
[空白のフォーム]のボタンをクリックすると、レイアウトビューで表示されます。
フォームをデザインビューに切り替えて、[デザイン]タブの[コントロール]グループにある[オプショングループ]のボタンをクリックします。
この時、[コントロールウィザードの使用]がオンになっていることを確認します。
注意もし、[オプショングループ]が見つからない場合は、[レイアウトビュー]になっていると思います。
[デザイン]タブの[表示]グループにある[表示]ボタンから[デザインビュー]を選択してください。
ステータスバーの右下のボタンでも切り替えができます。
オプショングループウィザード
ドラッグすると、[オプショングループウィザード]が表示されます。
ラベル名に、表示したい名前を入力していきます。
ここでは、[東京都][大阪府][すべて]と入力します。[次へ]のボタンをクリックします。
既定のオプションを指定するか、しないかの設定になります。既定値とは、フォームを開いた時に選択されている値のことです。
ここでは、[次のオプションを既定にする]で[すべて]を選択します。
[次へ]をクリックします。
割り当てられている値を確認して、[次へ]をクリックします。
オプショングループに含めるコントロールと、スタイルを選択します。
ここでは、既定のまま[オプションボタン]にします。
変更したい場合は、左側のプレビューで確認しながら選択してください。
トグルボタン(左)とチェックボックス(右)は、以下のような形になります。
フレームの標題を入力します。
ここでは[どの情報が必要ですか?]とします。[完了]ボタンをクリックします。
フォームは、以下のようになっていると思います。
フレームを選択して、フレームの名前を確認しておきます。ここでは、[フレーム0]となっています。
変更したい場合は、プロパティの[その他]タブの[名前]で変更してください。
参考オプションボタンの既定値は、フレームのプロパティで変更できます。
プロパティの[データ]タブにある[既定値]で変更します。
オプショングループウィザードの[次のオプションを既定にする]で[すべて]を選択したので、ここでは既定値は[3]になっていますが、[東京都]に変更したい時は[1]、[大阪府]に変更したい時は[2]にします。
[0]に設定すると、フォームを表示したときにどれも選択していない状態になります。
レポートを開くボタンの作成
レポートを開くためのボタンを作成します。
ここでは、ウィザードに沿って作成しますが、他の方法で作成しても構いません。
[デザイン]タブの[コントロール]グループから[ボタン]をクリックします。
任意の位置でドラッグすると、[コマンドボタンウィザード]が表示されます。
[種類]から[レポートの操作]を選択して、[ボタンの操作]では[レポートのプレビュー]を選択します。
[次へ]をクリックします。
レポートを選択します。
ここでは、1つですが、複数表示された場合は、間違えないように選択してください。
[次へ]をクリックします。
コマンドボタンに表示する文字列かピクチャを選択します。
[文字列]か[ピクチャ]を選択するようになっていますが、これは完成後にプロパティで変更できます。
文字列もピクチャも両方を表示することもできます。
ここでは、[文字列]を選択して、ボタンに表示したい名前をテキストボックスに入力します。
ここでは[レポートのプレビュー]としています。
[次へ]をクリックします。
ボタン名を入力します。ここでは、[印刷プレビュー]とします。
[完了]ボタンをクリックします。
フォームにボタンが作成できました。
埋め込みマクロの修正
ボタンのプロパティの[イベント]タブを見ると、[クリック時]に[埋め込みマクロ]と表示されていると思います。
このままでもいいのですが、後から編集することを考えて修正します。
[クリック時]の[...]ボタンをクリックします。
以下のような画面が表示されて、[レポート名]に見慣れない文字が表示されていると思います。
この文字をすべて削除します。
削除すると、テキストボックスの右側に▼ボタンが表示されるので、クリックしてプルダウンメニューから[R_社員]を選択します。
この方が分かりやすいですね。
[マクロツール]の[閉じる]ボタンをクリックします。
メッセージウィンドウが表示されたら、[はい]をクリックします。
参考このコマンドウィザードで作成した時の[埋め込みマクロ]については、以下の記事で解説しています。
-
コマンドボタンウィザードによるボタン作成後の[埋め込みマクロ]について
Accessでは、ウィザードを使用して簡単にボタンを作成することができます。 これについては、ウィザードを使ったコマンドボタンの作成で解説し ...
フォームビューに切り替えて、作成したボタンの動作を確認します。
フォームは、大きさなどを調整して、名前を付けて保存します。ここでは、[F_選択]としています。
レポートを開く時のイベントで設定
レポートをデザインビューで開きます。
レポートのプロパティを開いて、[イベント]タブの[開く時]の[ビルダー選択]ボタン[...]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されます。
マクロビルダーか、コードビルダーで設定します。どちらで設定してもかまいません。どちらかで設定します。
[マクロビルダー]と[コードビルダー]の相違点などは以下の記事で解説しています。
-
マクロアクション(マクロビルダー)とVBA(コードビルダー)
Accessでは、マクロアクション(マクロの実行アクション)やVBA(Visual Basic for Applications)を使って一 ...
コードビルダーで設定
[ビルダーの選択]ダイアログボックスの[コードビルダー]を選択して[OK]ボタンをクリックします。
以下のVBEの画面が表示されます。
以下の内容を入力します。
Select Case Forms!F_選択!フレーム0
Case 1
RecordSource = "Q_東京社員"
Case 2
RecordSource = "Q_大阪社員"
Case 3
RecordSource = "Q_全社員"
End Select
以下のようになります。
参考[Me.]は入力しなくても動作しますが、[Me.]と入力すると、入力候補一覧(補助メニュー)が表示されるので、スペルなどのミスは少なくなると思います。
Me.RecordSource = "Q_東京社員"
これで完了です。
レポートを閉じて、フォームを開いて、動作を確認してみてください。
オプションボタンで[東京都]を選択すると、クエリ[Q_東京社員]の情報が表示されます。
オプションボタンで[大阪府]を選択すると、クエリ[Q_大阪社員]の情報が表示されます。
レポートにラベルで見出しを挿入している場合
もし、レポートヘッダーにラベルを挿入している場合は、ラベルの内容も変更したいですね。
その場合は、開く時のイベントプロシージャに追記します。
プロパティを開いて、ラベルの名前を確認します。ここでは、ラベルの名前は[ラベル40]となっています。
開く時のイベントプロシージャに、コードを追加します。
Select Case Forms!F_選択!フレーム0
Case 1
RecordSource = "Q_東京社員"
ラベル40.Caption = "東京"
Case 2
RecordSource = "Q_大阪社員"
ラベル40.Caption = "大阪"
Case 3
RecordSource = "Q_全社員"
End Select
マクロビルダーで設定
[ビルダーの選択]ダイアログボックスの[マクロビルダー]を選択して[OK]ボタンをクリックします。
[マクロウィンドウ]が表示されます。
[新しいアクションの追加]の▼ボタンをクリックして[If]を選択します。
[If]の条件式に以下のとおり入力します。
[マクロデザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]をクリックします。
[新しいアクションの追加]の▼ボタンをクリックして、一番下までスクロールして、[値の代入]を選択します。
[値の代入]の[アイテム]には、以下のように入力します。
[式]には以下のように入力します。ダブルクォーテーションで囲むのを忘れないようにしてください。
"Q_東京社員"
[Else If の追加]をクリックします。
続けて、同じように[フレーム0]の値によって設定します。
同じようなマクロアクションを追加する場合は、コピー&ペーストすると効率的です。
-
マクロツールで既存のアクションをコピーして活用(再利用)するには
Accessでは多くのマクロアクションが使用できます。 しかし、毎回アクションを選択して入力するのは面倒ですね。 マクロアクションは、コピー ...
以下のようになれば完成です。
また、ラベルの内容も変更したいのであれば、続けて[値の代入]アクションを追加して入力します。
[値の代入]の[アイテム]には、以下のように入力します。
[値の代入]の[式]には、以下のように入力します。
"東京"
マクロアクションの設定が終わったら、上書き保存して[マクロウィンドウ]を閉じます。
レポートのプロパティ[開く時]イベントには、[埋め込みマクロ]と表示されます。
参考印刷するレコードがない場合にメッセージを表示するには、レポートの[空データ時]イベントで設定します。
-
印刷するレコードがない場合はメッセージを表示して印刷を中止する
Accessのレポートで印刷を実行しようとしても、該当するデータがない場合があります。 印刷プレビューで確認すれば、印刷を実行せずに済むかも ...
レポートを最大化で開くには
印刷プレビューを最大化で開くには、レポートの[読み込み時]のイベントで設定します。
[ビルダーの選択]ダイアログボックスの[マクロビルダー]を選択して、[マクロウィンドウ]を開きます。
[新しいアクションの追加]で[ウィンドウの最大化]を選択して保存します。
参考Accessでオプションボタンを作成する方法は、以下の記事でも解説しています。
-
オプショングループの作成と選択したデータの保存
Access2010でオプショングループを作成して、その選択データをテーブルに保存する方法です。 画像はAccess2010ですが、ほかのバ ...
-
オプションボタンでサブフォームに表示するデータを切り替えるには
オプションボタンでサブフォームのソースオブジェクトを変更する方法です。 下のようなオプショングループを設置して、サブフォームを組み込んだフォ ...
また、1つのフォームを作成して、開く時に参照用と編集用に切り替えて表示する方法も解説しています。これも、オブジェクトを増やさず済むので、データベースのサイズを気にするような場合はお勧めです。
-
フォームを参照用と編集用にボタンで切り替え(埋め込みマクロで設定)
Accessで1つのフォームを作成して、すべての内容を見せてレコードの編集ができるようにしています。 でも、そのフォームを開く時に制限を付け ...