Accessでコンボボックスを連動させる方法についてご紹介します。
商品区分コンボボックスとそれに紐づく商品の紐づけを行いたいと思います。
フォーム作成
コンボボックス1
名前:cbo商品区分
値集合ソース:m_item_divテーブルのselect文 or m_item_divのクエリー
コンボボックス2
名前:cbo商品
値集合ソース:
SELECT m_item.item_id, m_item.item_name FROM m_item WHERE (((m_item.item_div)=[Forms]![F_コンボボックス2]![cbo商品区分])) ORDER BY m_item.sort_seq;
ポイントは、[Forms]![F_コンボボックス2]![cbo商品区分]))の箇所です。
画面のcbo商品区分を条件にいれています。
クエリビルダーで確認すると下記のようになります。
テキスト
名前:txt商品名
背景色:#FCE6D4
使用可否:いいえ
編集ロック:はい
VBA1(商品区分の更新後イベント)
商品区分の更新後イベント
Private Sub cbo商品区分_AfterUpdate() On Error GoTo Error Me.txt商品名.Value = "" Me.cbo商品.Value = Null Me!cbo商品.Requery Exit Sub Error: MsgBox "エラーが発生しました。エラー内容:" & Err.Description & Chr$(10), vbCritical, "商品選択" End Sub
テキストボックスとコンボボックスの初期化をしてコンボボックスをRequeryしています。
Requeryするとコンボボックスを再描画しますので、初期化されます。
VBA2(商品名の更新後イベント)
商品名の更新後イベント
Private Sub cbo商品_AfterUpdate() On Error GoTo Error ' 初期化 Me.txt商品名.Value = "" If Me.cbo商品.Value <> "" Then Me.txt商品名.Value = Me.cbo商品.Column(1) End If Exit Sub Error: MsgBox "エラーが発生しました。エラー内容:" & Err.Description & Chr$(10), vbCritical, "商品選択" End Sub
cbo商品を選択したら商品名を右横に表示させています。
初期化しないとcboで未選択の場合にエラーになるので条件分岐します。
画面確認
商品区分を変更すると商品コンボの中身も変更されます
未選択にすると商品コンボも初期化されます
選択された商品名はテキストに表示されます
コメント