表示したかった列数
例えば依頼者だったら三列目ですので
連結列0 → 連結列3 にしたら
コンボボックス更新後も三列目
読込後も三列目になりました。
上の回答で、この設定は間違いといいましたが、なぜ、まちがいか説明しておきます。
コンボボックスの値集合ソースは下記のようなテーブルになってます。
T_着色作業者
主キー | 作業者ID | 作業者姓 | 作業者名 | 作業者姓フリガナ | 作業者名フリガナ |
---|---|---|---|---|---|
C01 | 1234 | 日本 | 太郎 | ニホン | タロウ |
C02 | 5678 | 東京 | 一郎 | トウキョウ | イチロウ |
ここで、連結列を3にすると、フィールドには3列目の作業者姓が格納されます。
2行目を選択すれば、「東京」が格納されます。
列幅の設定で3列目が表示されるようになってますので、表示値と格納値が同じになります。
これで、いいように思うかもしれませんが、姓は重複する可能性があります。
例えば、値集合ソースが下記のようなデータの場合、
主キー | 作業者ID | 作業者姓 | 作業者名 | 作業者姓フリガナ | 作業者名フリガナ |
---|---|---|---|---|---|
C01 | 1234 | 日本 | 太郎 | ニホン | タロウ |
C02 | 5678 | 東京 | 一郎 | トウキョウ | イチロウ |
C03 | 5679 | 東京 | 進 | トウキョウ | ススム |
3行目を選択すると「東京」が格納されます。
あとから、この「東京」からどの作業者か特定しようとしても、2行目の作業者なのか、3行目の作業者なのか判別がつきません。
連結列3の設定の cmb依頼者 で3行目を選択してから、下記を実行してみてください。
Debug.Print "格納値: " Me!cmb依頼者.Value
Debug.Print "1列目の値: " & Me!cmb依頼者.Column(0)
Debug.Print "2列目の値: " & Me!cmb依頼者.Column(1)
Debug.Print "3列目の値: " & Me!cmb依頼者.Column(2)
Debug.Print "4列目の値: " & Me!cmb依頼者.Column(3)
格納値: 東京
1列目の値: C02
2列目の値: 5678
3列目の値: 東京
4列目の値: 一郎
というように2行目の作業者がイミディエイトに表示されると思います。重複がある場合、一番上の行が選択されたことになりますので。
つまり、連結列にするフィールドは重複のないユニークなフィールドにする必要があるのです。つまり、主キーフィールドにするというのがデータベース設計の原則です。この値集合ソースなら 連結列 1 です。
通報 ...