PR

Access: 条件に応じてコンボボックスに表示する値を変更する方法

全般

今回は、Accessフォーム上のコンボボックスで、値リストのレコードの内、条件にあったものだけを抽出して表示する方法を紹介します。例として、社員番号を抽出する際に在籍者か退職者に応じたレコードを表示するように設定をしていきます。

まずは、サンプルデータを示します。次に、クエリとフォームの作成方法を紹介していきます。途中にちょっとしたVBAによるコーディングをしますが、いずれも、それほど難しい内容ではないので、お付き合いいただければと思います。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

スポンサーリンク

サンプルデータ

今回は、「T_従業員リスト」というテーブルを作成し、ここでは値リストのもとになるサンプルデータを登録します。まず、フィールドには「社員番号」フィールドと「在籍区分」フィールドを設定し、それぞれ「短いテキスト型」とします。

次に、サンプルデータとして、次のような値を登録します。

■今回用意したサンプルデータ(在籍区分に在籍か退職かを登録します。)

社員番号 在籍区分
2020A001 在籍
2019A002 在籍
1979A001 退職
1965B004 退職

フォーム・クエリの作成

コンボボックスを配置するためのフォームとして「F_Main」を作成します。

このフォームには、在籍区分を選択するコンボボックス(「t_在籍区分」という名称にします。)とそれに応じた従業員番号を表示するコンボボックス(「t_従業員番号」という名称にします。)をそれぞれ配置します。(図1参照)

図1 コンボボックスの配置

続いて、「t_在籍区分」コンボボックスの値集合ソースプロパティには「”在籍”;”退職”」、値集合タイププロパティには「値リスト」と設定します。さらに、更新後処理プロパティには「イベントプロシージャ」を設定し、右側にある「…」ボタンをクリックしてVBA画面を開きます。

ここで、以下のコードのように記載します。

Private Sub t_在籍区分_AfterUpdate()

  'この1行を追記する。
  Me.Refresh

End Sub

次に、「t_従業員番号」の値集合ソース向けにクエリを作成します。

まず、クエリデザイン画面から「T_従業員リスト」を選択します。続いて、【フィールド】項目には「社員番号」と「在籍区分」フィールドを設定します。

先に作成していた「F_Main」の「t_在籍区分」の値で抽出条件を変更するため、参照先として【抽出条件】項目に「[Forms]![F_Main].[t_在籍区分]」と入力します。(図2参照)

図2 従業員番号抽出クエリの作成

これで、フォーム上の在籍区分の値に応じて抽出されるレコードが変化するようになりました。このクエリを「Q_抽出」として保存した後、「F_Main」のデザインフォームに戻ります。

「t_従業員番号」コンボボックスの値集合ソースプロパティには作成した「Q_抽出」クエリを設定し、値集合タイププロパティには「テーブル/クエリ」と設定します。なお、コンボボックスに対する値集合ソースの設定方法については、以下の記事もご参考ください。

これで一通りの設定が完了しましたので、実際の動作を見てみましょう。

動作確認

早速、「F_Main」をフォームビュー画面で開きます。図3に示すような画面が表示されると思いますので、「t_在籍区分」コンボボックスで「在籍」か「退職」かを選択します。

図3 在籍区分の選択

これにより、画面のリフレッシュが行われ、在籍区分に応じて選択クエリによるレコードの抽出が行われ、結果として図4に示すような結果が得られるようになりました。

図4 在籍区分選択後に表示される従業員番号

まとめ

今回は、フォーム上のコンボボックスで表示する値について、条件に応じて値リストの抽出方法を変化させることでユーザーが選択しやすい仕組みを作成しました。

フォーム、クエリ、VBAといずれの設定も簡単ではありますが、慣れるまでには難しい内容かもしれませんので、本記事を参考に色々と試してみていただければと思います。また、今回紹介した内容では説明不足な点もあると思いますので、書籍などもお手元に用意してAccess開発に取り組んでいただければと思います。

スポンサーリンク

Kindle Unlimitedにサインアップして無料体験に登録する
Kindle Unlimitedに登録すると、人気のシリーズ、ベストセラー、名作などに好きなだけアクセスして、シームレスなデジタル読書体験を実現できます。

コメント

タイトルとURLをコピーしました