コンボボックスには「表示専用」パターンと「編集/保存」パターンがある
目的はⅠ.値集合ソースの参照(レコードの表示)なのか
Ⅱ.値集合ソースの代入(レコードの上書き保存)なのか
【例】
図書館の利用者登録フォーム
利用者の初回利用登録日に応じて利用期限を算出する必要があるため
クエリに計算式を持たせ、フォームのレコードソースはクエリとしている
Ⅰ. 照合が目的のフォーム
コンボボックスは、値集合ソースの参照(レコードの表示)のみ
レコードソースはクエリのまま
各テキストボックスのコントロールソースに直接、column関数を書き込む
利用者名∇
=[cmb利用者].Column(1)
誕生日∇
=[cmb利用者].Column(2)
住所∇
=[cmb利用者].Column(3)
登録日∇
=[cmb利用者].Column(4)
利用期限∇
=[cmb利用者].Column(5)
Ⅱ. 登録変更および新規登録が目的のフォーム
コンボボックスは、値集合ソースの代入(レコードの上書き保存)使用
レコードソースをクエリからマスタテーブルに変更し
各テキストボックスのコントロールソースからcolumn関数を消去
テキストボックスがテーブルの項目と直接つながる(連結)必要があるため
値集合ソースから選択した各フィールド名を各コントロールソースにセット
※VBAが実行されれば、クエリを通じテーブルのレコードに計算結果が反映
更新後処理の[イベント プロシージャ]に
column関数をVBA形式にて記入∇
Private Sub cmb利用者_AfterUpdate()
Me!利用者名 = Me!cmb利用者.Column(1)
Me!誕生日 = Me!cmb利用者.Column(2)
Me!住所 = Me!cmb利用者.Column(3)
Me!登録日 = Me!cmb利用者.Column(4)
Me!利用期限 = Me!cmb利用者.Column(5)
End Sub