今回は、Accessフォーム上のコンボボックスで、値リストのレコードの内、条件にあったものだけを抽出して表示する方法を紹介します。例として、社員番号を抽出する際に在籍者か退職者に応じたレコードを表示するように設定をしていきます。
まずは、サンプルデータを示します。次に、クエリとフォームの作成方法を紹介していきます。途中にちょっとしたVBAによるコーディングをしますが、いずれも、それほど難しい内容ではないので、お付き合いいただければと思います。
スポンサーリンク
サンプルデータ
今回は、「T_従業員リスト」というテーブルを作成し、ここでは値リストのもとになるサンプルデータを登録します。まず、フィールドには「社員番号」フィールドと「在籍区分」フィールドを設定し、それぞれ「短いテキスト型」とします。
次に、サンプルデータとして、次のような値を登録します。
■今回用意したサンプルデータ(在籍区分に在籍か退職かを登録します。)
社員番号 | 在籍区分 |
2020A001 | 在籍 |
2019A002 | 在籍 |
1979A001 | 退職 |
1965B004 | 退職 |
フォーム・クエリの作成
コンボボックスを配置するためのフォームとして「F_Main」を作成します。
このフォームには、在籍区分を選択するコンボボックス(「t_在籍区分」という名称にします。)とそれに応じた従業員番号を表示するコンボボックス(「t_従業員番号」という名称にします。)をそれぞれ配置します。(図1参照)
続いて、「t_在籍区分」コンボボックスの値集合ソースプロパティには「”在籍”;”退職”」、値集合タイププロパティには「値リスト」と設定します。さらに、更新後処理プロパティには「イベントプロシージャ」を設定し、右側にある「…」ボタンをクリックしてVBA画面を開きます。
ここで、以下のコードのように記載します。
Private Sub t_在籍区分_AfterUpdate() 'この1行を追記する。 Me.Refresh End Sub
次に、「t_従業員番号」の値集合ソース向けにクエリを作成します。
まず、クエリデザイン画面から「T_従業員リスト」を選択します。続いて、【フィールド】項目には「社員番号」と「在籍区分」フィールドを設定します。
先に作成していた「F_Main」の「t_在籍区分」の値で抽出条件を変更するため、参照先として【抽出条件】項目に「[Forms]![F_Main].[t_在籍区分]」と入力します。(図2参照)
これで、フォーム上の在籍区分の値に応じて抽出されるレコードが変化するようになりました。このクエリを「Q_抽出」として保存した後、「F_Main」のデザインフォームに戻ります。
「t_従業員番号」コンボボックスの値集合ソースプロパティには作成した「Q_抽出」クエリを設定し、値集合タイププロパティには「テーブル/クエリ」と設定します。なお、コンボボックスに対する値集合ソースの設定方法については、以下の記事もご参考ください。
これで一通りの設定が完了しましたので、実際の動作を見てみましょう。
動作確認
早速、「F_Main」をフォームビュー画面で開きます。図3に示すような画面が表示されると思いますので、「t_在籍区分」コンボボックスで「在籍」か「退職」かを選択します。
これにより、画面のリフレッシュが行われ、在籍区分に応じて選択クエリによるレコードの抽出が行われ、結果として図4に示すような結果が得られるようになりました。
まとめ
今回は、フォーム上のコンボボックスで表示する値について、条件に応じて値リストの抽出方法を変化させることでユーザーが選択しやすい仕組みを作成しました。
フォーム、クエリ、VBAといずれの設定も簡単ではありますが、慣れるまでには難しい内容かもしれませんので、本記事を参考に色々と試してみていただければと思います。また、今回紹介した内容では説明不足な点もあると思いますので、書籍などもお手元に用意してAccess開発に取り組んでいただければと思います。
スポンサーリンク
コメント