あるコンボボックスの値を参照してリストの内容を変化させるコンボボックスの作り方(ACCESS)
ホーム>あるコンボボックスの値を参照してリストの内容を変化させるコンボボックスの作り方(ACCESS)
Microsoft Access2003において、あるコンボボックスに値を指定すると、その値を参照して、別のコンボボックスのリスト値を変化させる方法を解説します。
部署に営業を指定すると、営業に属している社員のみがコンボボックスのリストの値にセットされる、といったことを実現できます。
ここでは例として、部署とそれに属する社員を表示させる方法を示します。
テーブルを作る
まず、部署データを格納するテーブル「テーブル_部署」、人物データを格納するテーブル「テーブル_人物」、その2つのテーブルから作成した社員データを格納するテーブル「テーブル_社員」の3つのテーブルを作ります。
テーブル_部署
フィールドは、オートナンバー型の「部署ID」(主キー)と、テキスト型の「部署名」の2つです。
テーブルを開き、部署名に「営業、総務、経理、-」とそれぞれ4つのレコードを入力しておきます。
テーブル_人物
フィールドは、オートナンバー型の「人物ID」(主キー)と、テキスト型の「人物名」、数値型の「部署ID」の3つです。
テーブルを開き、人物名と所属する部署IDを適当に入力しておきます。
テーブル_社員
フィールドは、オートナンバー型の「社員ID」(主キー)と、数値型の「部署ID」、数値型の「人物ID」の3つです。
入力フォーム用クエリをつくる
入力フォーム用にクエリをつくります。
「テーブル_社員」「テーブル_人物」「テーブル_部署」の3つを関連させたクエリ「クエリ_社員」をつくります。
「テーブル_人物」の「人物ID」フィールドは「テーブル_社員」の「人物ID」フィールドに関連させます。
「テーブル_部署」の「部署ID」フィールドは「テーブル_社員」の「部署ID」フィールドに関連させます。
フィールドには、「テーブル_社員」の全フィールド、「テーブル_人物」の「人物名」フィールド、「テーブル_部署」の「部署名」フィールドを指定します。
入力フォームをつくる(単票の場合)
先ほどつくった「クエリ_社員」をソースとしたフォームを作成します。
全コントロールをフォーム上に貼り付けます。
名前を「フォーム」にします。
コンボボックス用クエリの作成
後でつくる「人物ID」コンボボックスに設定するためのクエリをつくります。
「テーブル_人物」と「テーブル_部署」から成る選択クエリをつくります。両者の「部署ID」を関連させます。
フィールドには、「人物ID」「人物名」「部署ID」を指定します。
「部署ID」フィールドの[抽出条件]に、以下のように[Forms]![フォーム]![部署ID]と入力します。
クエリ名を「クエリ」にして保存します。
コンボボックスの作成
部署選択コンボボックス
「部署ID」コントロールを、右クリック->[コントロールの種類の変更]->[コンボボックス]を指定して、コンボボックスに変更します。
さらに「部署ID」コントロールを、右クリック->[プロパティ]で、プロパティを表示させます。
[データ]タブの[値集合ソース]を[テーブル_部署]にします。
[書式]タブの[列数]を2に、[列幅]を1;3と入力し、[リスト幅]を4にします(確定するとcmが自動的に挿入されます)。
人物選択コンボボックス
「人物ID」コントロールを、右クリック->[コントロールの種類の変更]->[コンボボックス]を指定して、コンボボックスに変更します。
さらに、「人物ID」コントロールを、右クリック->[プロパティ]で、プロパティを表示させます。
[データ]タブの[値集合ソース]を[クエリ]に指定します。
[書式]タブの[列数]を2に、[列幅]を1;3に、[リスト幅]を4にします(確定するとcmが自動的に挿入されます)。
以下のようなフォームになります。
このフォームを実行すると、以下のように、選択した部署に所属する人物のみが人物のコンボボックスに表示されるようになります。
入力フォームをつくる(帳票の場合)
帳票フォームとは、複数レコードを一度に表示するフォームのことです。帳票フォームで同様のことをする場合には、VBAが必要になります。
「クエリ_社員」をソースとしたフォームを作成します。
全コントロールをフォーム上に貼り付けます。
名前を「フォーム_帳票」にします。
コンボボックス用クエリの作成
後でつくる「人物ID」コンボボックスに設定するためのクエリをつくります。
「テーブル_人物」と「テーブル_部署」から成る選択クエリをつくります。両者の「部署ID」を関連させます。
フィールドには、「人物ID」「人物名」「部署ID」を指定します。
「部署ID」フィールドの[抽出条件]に、以下のように[Forms]![フォーム_帳票]![部署ID]と入力します。
クエリ名を「クエリ_帳票」にして保存します。
コンボボックスの作成
部署選択コンボボックス
「部署選択コンボボックス」の作成は、単票フォームのときと同じです。
人物選択コンボボックス
「人物選択コンボボックス」の作成は、単票フォームのときとほぼ同じです。
ただし、[データ]タブの[値集合ソース]に指定するのは「クエリ_帳票」です。
さらに、[イベント]タブで[フォーカス取得時]に[イベントプロシージャ]を指定します。
右側に表示されるボタンをクリックして、コード入力画面が開いたら、以下のように「Me.人物ID.Requery」と入力します。
帳票フォームの場合は、このように再クエリさせないと、別のレコードに移動しても、前の部署コンボボックスを参照した値が、人物コンボボックスにセットされたままになってしまいます。
後は、フォームを整形すると、以下のようなフォームになります。
実行すると以下のようになります。
関連リンク
よく読まれている記事
- 右クリックメニューの表示が遅い【Information】
- 画像の一部にリンクを貼る(クリッカブルマップ【Dreamweaver】
- 一定時間でローテーションする広告【JavaScript】
- Dreamweaver【Dreamweaver】
- クリックした画像を拡大・縮小する【JavaScript】
UpDate:2011-8-26