見出し画像

【ACCESS コントロール】コンボボックス

コンボボックスとは

コンボボックスとは あらかじめ決まった値が
プルダウンで選択されるものです
コンボボックスを使えば入力するデータを制御できるので
開発者の予測しないデータの入力を防ぐことができ
また入力する人にとっても文字を入力せず
マウス操作だけで入力できる簡易さがあります

コンボボックスの使用例 2件

動画で解説

全 6分28秒のうち コンボボックスの説明は
54秒 ~ 2分40秒 です

① コンボボックスで選んだコード番号の社員の氏名・カナをテキストボックスに表示

動作の流れ

社員コードをコマンドボタンのプルダウンから選びます

選んだ社員コードの社員氏名 カナをテキストボックスに表示します

フォームに設置したコントロールの設定

コンボボックス
名前:cbo_code
値集合ソース:M_staff (社員マスタ)
値集合タイプ:テーブル/クエリ
連結列:1

テキストボックス(氏名)
名前:txt_name

テキストボックス(カナ)
名前:txt_kana

VBAコード

コンボボックス(cbo_code)更新後処理

Private Sub cbo_code_AfterUpdate()
    If IsNull(Me.cbo_code) Then
        MsgBox "コードをいれてください"
        Me.cbo_code.SetFocus
        Exit Sub
    Else
        Me.txt_name = DLookup("staff_name", "M_staff", "staff_code = " & Me.cbo_code)
        Me.txt_kana = DLookup("staff_kana", "M_staff", "staff_code = " & Me.cbo_code)
    End If
End Sub

If IsNull(Me.cbo_code) Then
 MsgBox "コードをいれてください"
 Me.cbo_code.SetFocus
 Exit Sub

If 文で コマンドボックスに入力されたかどうか判断しています
入力されていなければ IsNull が True となり
その場合
「コードをいれてください」とメッセージが表示され
コンボボックスにフォーカスを移し処理を終わります
Else
 Me.txt_name = DLookup("staff_name", "M_staff", "staff_code = " & Me.cbo_code)
 Me.txt_kana = DLookup("staff_kana", "M_staff", "staff_code = " & Me.cbo_code)
End If

コンボボックスに入力されていれば
氏名 カナのテキストボックスに
DLookup 関数を使用してテーブルの値を表示しています
Dlookup 関数の構文
DLookup ( 値を返すフィールド , レコード セット , データ範囲を制限する文字列式 )
社員マスターテーブルから社員コードが3番の人の氏名を参照したいとき
DLookup ( “社員名” , “社員マスター” , “社員コード = 3” )

② ひとつめのコンボボックスで選んだ値によって ふたつめのコンボボックスの値を絞る

動作の流れ

ひとつ目のコンボボックスから 部署をえらびます

経理部署をえらんだら ふたつめには 
経理部の部員の名前が抽出されて表示されます

よって 営業をえらんだら部員は営業部員に絞られます

フォームに設置したコントロールの設定

コンボボックス(部署)
名前:cbo_cusho
値集合ソース:M_busho
値集合タイプ:テーブル/クエリ
連結列:1

コンボボックス(部員)
名前:cbo_member

VBAコード

部署コマンドボタン更新後処理

Private Sub cbo_busho_AfterUpdate()
    cbo_member = ""
    With Me.cbo_member
        .RowSourceType = "Table/Query"
        .RowSource = "SELECT staff_name FROM M_staff WHERE busho_code = " & Me.cbo_busho
    End With
End Sub

cbo_member = ""
部員コンボボックスの値を空にします
With Me.cbo_member
 .RowSourceType = "Table/Query"
 .RowSource = "SELECT staff_name FROM M_staff WHERE busho_code = " & Me.cbo_busho
End With

コンボボックス cbo_member について設定します
値集合タイプをテーブル/クエリにします
値集合ソースを SQL文で
M_staff(社員マスタ)から staff_name (氏名)を
WHERE 句で
M_staff の busho_code を コンボボックス部署(cbo_busho)の値で参照しています

まとめ

コンボボックスはリストボックスとよく似たコントロールです
それぞれの特性を理解し
使い分けることが必要です

リストボックスの記事


いいなと思ったら応援しよう!