Accessのコンボボックスで複数列表示させたいですよね。

上記は私が作成した在庫管理システムの一部ですが、最初は社員コード1列しか表示されませんでした。コードだけだ名前がとわかりませんよね。
-
-
簡易的にAccessデータベースで在庫管理システムを作成(サンプル付)
必要に迫られてAccessにて在庫管理・在庫検索・入出庫処理・入出庫履歴・在庫転送・単位変換、マスターデータの修正等々を装備したデータベースを構築しました。フォーム(分割フォームやサブフォーム)・クエリ・VBAを使っています。
続きを見る
列数を変更
コンボボックスのプロパティシートにて列数を2列にします。列幅も1列目、2列めのサイズに応じて書き換えます。

値集合ソース
このコンボボックスを表示させるテーブル(社員)は下記の通りです。
ID | オートナンバー型 |
社員コード | 数値型 |
社員 | テキスト型 |
所属 | テキスト型 |
削除 | Yes/No型 |
このテーブルをコンボボックスのプロパティシートに反映させます。データタブの値集合ソースに
1 |
SELECT 社員.社員コード,社員.社員 FROM 社員 ORDER BY 社員.社員コード ASC; |
と記載します。ORDER BY 社員.社員コード
はORDER BY 社員.社員
とすれば社員名の昇順に変更されます。

結果

社員コードと社員名の2列で表示できました。さらに3列以上も同様にして増やしていけます。
コンボボックスウィザードを使用した場合の注意
コンボボックスウィザードにてテーブルやクエリからフィールドを選択して同様に作り表示することができます。
しかし、コンボボックスの中身(.value)が「ID」になっていることがありませんか?ウィザードの時に「ID」を除外した筈ですが・・・

コンボボックスのプロパティシートから「値集合ソース」を見てみると、
1 |
SELECT [T_社員].[ID], [T_社員].[社員コード], [T_社員].[社員] FROM [T_社員] ORDER BY [社員コード]; |
さらに

「列数」が「3」になっていて、列幅が「0cm;2.54cm;2.54cm」になっています。
「値集合ソース」から「[T_社員].[ID],」を削除して⇩
1 |
SELECT [T_社員].[社員コード], [T_社員].[社員] FROM [T_社員] ORDER BY [社員コード]; |
とし、列幅を「2」に、列幅から「0cm;」を消せばコンボボックスの値に「ID」ではない値(上記例では社員コード)が入ります。