Microsoft Access 掲示板

テーブル変更後、読み込まなくなりました。 / 31

36 コメント
views
4 フォロー
31
hatena 2022/05/29 (日) 23:39:25 修正

表示したかった列数
例えば依頼者だったら三列目ですので
連結列0 → 連結列3 にしたら
コンボボックス更新後も三列目
読込後も三列目になりました。

上の回答で、この設定は間違いといいましたが、なぜ、まちがいか説明しておきます。

コンボボックスの値集合ソースは下記のようなテーブルになってます。

T_着色作業者

主キー作業者ID作業者姓作業者名作業者姓フリガナ作業者名フリガナ
C011234日本太郎ニホンタロウ
C025678東京一郎トウキョウイチロウ

ここで、連結列を3にすると、フィールドには3列目の作業者姓が格納されます。
2行目を選択すれば、「東京」が格納されます。
列幅の設定で3列目が表示されるようになってますので、表示値と格納値が同じになります。
これで、いいように思うかもしれませんが、姓は重複する可能性があります。

例えば、値集合ソースが下記のようなデータの場合、

主キー作業者ID作業者姓作業者名作業者姓フリガナ作業者名フリガナ
C011234日本太郎ニホンタロウ
C025678東京一郎トウキョウイチロウ
C035679東京トウキョウススム

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 です。

通報 ...