オプションボタンでサブフォームのソースオブジェクトを変更する方法です。
下のようなオプショングループを設置して、サブフォームを組み込んだフォームを作成しています。
オプションボタンで[世田谷区]を選択すると、世田谷区のみのデータが抽出され、[墨田区]を選択すると、墨田区のデータが抽出されるようにします。
参考ここでは[ドキュメントウィンドウオプション]で[ウィンドウを重ねて表示する]を選択しています。[ウィンドウを重ねて表示する]と[タブ付きドキュメント]の違いについては、以下の記事で解説しています。
-
[タブ付きドキュメント]と[ウィンドウを重ねて表示する]の違い
Access2007以降、オブジェクトを表示すると、タブ付きウィンドウで表示されるようになっています。 昔からAccessを使用している方に ...
選択クエリの作成
まず、[受注]テーブルをもとにクエリを作成します。
クエリのデザインビューで[受注]テーブルをを表示して、デザイングリッドに、[受注ID]フィールドと[出荷先市区町村]フィールドを追加します。
[出荷先市区町村]フィールドの抽出条件に[世田谷区]と入力して、クエリは[Q_世田谷区]という名前を付けて保存します。
同じようにクエリ[Q_墨田区]も作成します。
受注サブフォームの作成
[受注サブフォーム]は、[受注]テーブルをもとに以下のように作成します。
フィールドは、[受注ID]と[出荷先市区町村]のみです。
フォームの既定のビューは、[データシート]です。
フォームビューに切り替えると、以下のように表示されます。
フォーム[F_抽出]に[受注サブフォーム]を組み込む
オプションボタンはコントロールのオプショングループから作成済みです。
オプショングループの作成については、以下の記事を参照してください。
-
オプショングループの作成と選択したデータの保存
Access2010でオプショングループを作成して、その選択データをテーブルに保存する方法です。 画像はAccess2010ですが、ほかのバ ...
フレームの名前は、ここでは[フレーム18]です。
[デザイン]タブの[コントロール]から[サブフォーム/サブレポート]ボタンをクリックします。
コントロールウィザードを使用して作成します。
フォーム[F_抽出]の[詳細]領域にドラッグして、サブフォームを組み込む位置を指定します。
[既存のフォームを使用する]を選択すると、作成済みのフォームの一覧が表示されます。
[受注サブフォーム]を選択して[次へ]ボタンをクリックします。
サブフォームの名前を付けて、[完了]ボタンをクリックします。
ここでは、そのまま[受注サブフォーム]とします。
フレームの更新後処理で設定
フォーム[F_抽出]の[フレーム18]を選択して、プロパティを表示します。
[イベント]タブの[更新後処理]の[ビルダー選択]ボタン[…]をクリックします。
[ビルダーの選択]ダイアログボックスが表示されますが、[コードビルダー]か[マクロビルダー]のどちらで設定します。
やりやすいほうで設定してかまいません。
参考プロパティは、キーボードから[F4]キーを押すと表示できます。
オプションボタンの[オプション値]は、[世田谷]が[1]と[墨田区]が[2]になっています。
コードビルダーで設定
[ビルダーの選択]ダイアログボックスが表示されますので、[コードビルダー]を選択して[OK]ボタンをクリックします。
マクロビルダーでも設定できます。
フレームの更新後処理イベントに下のように入力します。
[Me.]は省いてかまいません。
Select Case Me.フレーム18
Case 1
受注サブフォーム.SourceObject = "クエリ.Q_世田谷区"
Case 2
受注サブフォーム.SourceObject = "クエリ.Q_墨田区"
End Select
[フレーム18]のプロパティの更新後処理は、[イベントプロシージャ]と表示されます。
マクロビルダーで設定
更新後処理イベントで[ビルダーの選択]ダイアログボックスが選択されたら、[マクロビルダー]を選択します。
[新しいアクションの追加]の▼ボタンをクリックして、[If]を選択します。
[アクションカタログ]から選択してマクロウィンドウへ追加する方法もあります。
[If]の条件式に以下を入力します。
そして、[デザイン]タブの[表示/非表示]グループにある[すべてのアクションを表示]ボタンをクリックします。
[新しいアクションの追加]の▼ボタンをクリックします。
一番下までスクロールします。アクションの一覧から[値の代入]を選択します。
[値の代入]の[アイテム]に以下を入力します。
[値の代入]の[式]に以下を入力します。ダブルクォーテーションで囲むのを忘れないようにしてください。
"クエリ.Q_世田谷区"
そして、[Elseの追加]をクリックします。
[値の代入]の[アイテム]には、以下のように入力します。
[値の代入]の[式]には、以下のように入力します。
"クエリ.Q_墨田区"
以下のようになります。
上書き保存して、閉じます。
[更新後処理]のプロパティには、[埋め込みマクロ]と表示されます。
参考[Else Ifの追加]を選択すると複数の条件を追加できます。
フォームビューに切り替えて動作を確認
デザインビューからフォームビューに切り替えて、動作を確認します。
デアインビューからフォームビューに切り替えるには、キーボードから[F5]キーを使用すると便利です。
[世田谷区]を選択すると、左のように[出荷先市区町村]で世田谷のデータのみ、[墨田区]を選択すると、墨田区のデータのみが表示されるようになります。
参考以下の記事では、オプションボタンの選択によって、レポートのレコードソースを切り替える方法を解説しています。
-
フォームのオプションボタンでレポートのレコードソースを切り替え
1つのテーブルから、クエリを作成してデータを抽出することはよくあります。 そのクエリをもとにレポートを作成するとき、レポートのレコードソース ...
サブフォームの作成方法は、以下の記事でも解説しています。
-
サブフォームウィザードを使ってメインフォームへサブフォームを組み込む
メインフォームにサブフォームを組み込んで、サブフォームを含むフォームを作成できます。 コントロールの[サブフォーム/サブレポート]ボタンを使 ...