hatena
hatena
2021/01/30 (土) 18:14:26
ご希望のことはだいたいつかめました。
メンバー一人が複数の部署に所属するときがある。
今までは、同じテーブルに複数レコードとして格納していた。
これは、あまり良い方法ではないと思うので、改善したいが、
どのような設計にしたらよいか分からない、というところですね。
方法としては2つあります。
一つは複数値を持つフィールドを利用する方法です。
複数の値を記録するフィールド - もう一度学ぶMS-Access
上記のリンク先の画像を見てもらえれば分かると思いますが、
コンボボックスのドロップダウンリストにチェックボックスが付いていて、それをチェックすることで複数の所属部署を選択できるようになります。
ボックス部分には、選択した部署名がカンマ区切りで表示されます。
こちらだと、テーブル設計やフォーム設計の大きな変更なしに「所属部署」フィールドのルックアップで「複数の値を許可」を「はい」にするだけで簡単に実現できます。
もう一つは、
T_メンバー、T_部署 テーブルと、中間テーブルとして T_メンバー所属部署 を作成してそれぞれをリンクさせる方法になります。
テーブル設計は下記のような感じで。
T_メンバー(※メンバーID 名前 ・・・)
T_部署(※部署ID 部署名)
T_メンバー所属部署(※メンバーID ※部署ID)
※は主キー
「F_メンバー」のレコードソースは、T_メンバー。
これに埋め込むサブフォームのレコードソースは、T_メンバー所属部署。
サブフォームで 部署ID はコンボボックスにして部署名でも選択できるようにするといいでしょう。
通報 ...
ありがとうございます!複数値を持つほうが未経験で、興味を持ったのですが、選択肢はテーブル設定の値集合ソースに記載しておかないといけないんですよね?
そうだとしたら、所属部署も増減がある可能性があり、外にフォームを持たせたいので2つ目の方法にしようと思います。
そこで、最初の質問に戻るのですが、サブフォームを作った場合、「F_リスト」で「メンバー所属部署」の数だけメンバーを表示することはできますでしょうか。
①リストフォームでメンバー一覧を表示するとき、所属部署で絞り込みたい時があります。
↑
この件になります。
作成していて気づいたのですが、サブフォームに「所属部署」の中の「プロジェクトチーム」も追加します。
「所属部署」で絞り込んだ選択しとして、コンボボックスで選択させています。
(それ自体は作れています。)
この場合、サブフォームの元テーブルに「プロジェクトID」を追加しようと思っているのですが、これは主キーにする必要はないですよね?(主キーにする必要についてわからなくなってきました…)
主キーは個性を出すための方法ですよね??(適切な表現がわからず個性と書きましたが、独自性?)
だとしたら2つの主キー以外は普通のフィールドで大丈夫ですね。リレーションシップとかの問題が出てくるかと思いましたが、関係ないですよね。失礼しました。