Microsoft Access 掲示板

リストの中に2つ以上表示

14 コメント
views
4 フォロー

現在「F_リスト」があり、1個ずつ詳細ページへのボタンがついていて詳細ページ、「F_メンバー」が存在しています。
「F_メンバー」の中にいくつかの項目があるのですが、「所属部署」が複数存在している人がいます。
この取り扱いに悩み、「メンバーID」を1人に対して2個発行したりしていましたが、「F_メンバー」の中にサブフォームを作って2個以上登録できるようにしようかと考えています。
そこで質問ですが、サブフォームを作った場合、「F_リスト」で所属部署の数だけメンバーを表示することはできますでしょうか。
できる場合、どのような考え方をすればよいでしょうか。

どんぐりず
作成: 2021/01/28 (木) 15:48:34
通報 ...
1
hatena 2021/01/28 (木) 19:38:51 修正

まずは、
「F_リスト」「F_メンバー」のレコードソースは同じものですか。
また、メンバー、部署のデータを登録するテーブルなど関連するテーブルの、テーブル名、フィールド名、主キー設定を提示してください。

また、「F_リスト」は帳票フォームでしょうか。データシートフォームでしょうか。

2
どんぐりず 2021/01/29 (金) 22:00:05 9099b@e2de4

>「F_リスト」「F_メンバー」のレコードソースは同じものですか。
ちがうクエリを使っていました。データの更新を同期させる問題もあるし、同じものにしたほうがよいのでしょうか。
>メンバー、部署のデータを登録するテーブルなど関連するテーブルの、テーブル名、フィールド名、主キー設定
「T_メンバー」名前、担当部署(複数存在)、内線番号などがフィールド名です。主キーは「メンバーID」です。

「F_リスト」は帳票フォームです。

3
どんぐりず 2021/01/29 (金) 23:25:03 9099b@e2de4 >> 2

調整して、同じレコードソースにしました。今まで深く考えていませんでしたが、可能な場所は同じクエリにしたいと思いました!

4

どのようなことが希望なのか不明瞭なので、現在の状況を確認するためにいろいろ聞きました。

「F_リスト」「F_メンバー」のレコードソースが同じで方かいいかどうかは目的次第です。

現状はどのようになっていて、どの部分をどのように改善したいのか具体的に質問してもらえると、的確な回答でできると思います。

例えば、

そこで質問ですが、サブフォームを作った場合、「F_リスト」で所属部署の数だけメンバーを表示することはできますでしょうか。

サブフォームを作成するのは「F_メンバー」内にということですよね。
このサブフォームのレコードソースはなんでしょうか。テーブル名、フィールド名を提示してください。
また、『「F_リスト」で所属部署の数だけメンバーを表示する』とは具体的にどのような表示をイメージしていますか。

5
どんぐりず 2021/01/30 (土) 13:17:47 修正 9099b@e2de4

ありがとうございます。
伝わりづらく申し訳ありません。

①リストフォームでメンバー一覧を表示するとき、所属部署で絞り込みたい時があります。
①①の目的を果たすため、メンバー1人に複数の所属部署が存在した場合、現状はメンバーIDを複数作成し、所属部署だけ違うデータを複数作成していました。
③②が効率的な方法ではないため、1つのメンバーIDに複数の所属部署情報を持たせたいと考えました。
④所属部署が何個存在するか決めづらいので(現状多くて3個くらいだとは思いますが…)サブフォームを作ったほうが良いかと考えました。
⑤サブフォームには今のところ、所属部署のみ表示予定です。(プルダウンで選択)
⑥所属部署のレコードソースは「Q_所属部署」でフィールドは所属部署ID、所属部署名の予定です。
⑦一番の目的は①になります。

以上で、わかりづらい部分があればご指摘ください。申し訳ありません。

6
どんぐりず 2021/01/30 (土) 13:21:49 9099b@e2de4 >> 5

⑥に追記です。フィールドにメンバーIDも追加予定です。

7

ご希望のことはだいたいつかめました。
メンバー一人が複数の部署に所属するときがある。
今までは、同じテーブルに複数レコードとして格納していた。
これは、あまり良い方法ではないと思うので、改善したいが、
どのような設計にしたらよいか分からない、というところですね。

方法としては2つあります。

一つは複数値を持つフィールドを利用する方法です。

複数値を持つフィールドの作成または削除 - Access

複数の値を記録するフィールド - もう一度学ぶMS-Access

上記のリンク先の画像を見てもらえれば分かると思いますが、
コンボボックスのドロップダウンリストにチェックボックスが付いていて、それをチェックすることで複数の所属部署を選択できるようになります。
ボックス部分には、選択した部署名がカンマ区切りで表示されます。

こちらだと、テーブル設計やフォーム設計の大きな変更なしに「所属部署」フィールドのルックアップで「複数の値を許可」を「はい」にするだけで簡単に実現できます。

もう一つは、
T_メンバー、T_部署 テーブルと、中間テーブルとして T_メンバー所属部署 を作成してそれぞれをリンクさせる方法になります。

テーブル設計は下記のような感じで。

T_メンバー(※メンバーID 名前 ・・・)
T_部署(※部署ID 部署名)
T_メンバー所属部署(※メンバーID ※部署ID)

※は主キー

「F_メンバー」のレコードソースは、T_メンバー。
これに埋め込むサブフォームのレコードソースは、T_メンバー所属部署。
サブフォームで 部署ID はコンボボックスにして部署名でも選択できるようにするといいでしょう。

コードでも名称でも入力できるコンボボックス - hatena chips

8
どんぐりず 2021/01/31 (日) 00:24:47 修正 9099b@e2de4 >> 7

ありがとうございます!複数値を持つほうが未経験で、興味を持ったのですが、選択肢はテーブル設定の値集合ソースに記載しておかないといけないんですよね?
そうだとしたら、所属部署も増減がある可能性があり、外にフォームを持たせたいので2つ目の方法にしようと思います。
そこで、最初の質問に戻るのですが、サブフォームを作った場合、「F_リスト」で「メンバー所属部署」の数だけメンバーを表示することはできますでしょうか。

9
どんぐりず 2021/01/31 (日) 00:27:20 9099b@e2de4 >> 8

①リストフォームでメンバー一覧を表示するとき、所属部署で絞り込みたい時があります。

この件になります。

10
どんぐりず 2021/01/31 (日) 08:47:51 9099b@e2de4 >> 8

作成していて気づいたのですが、サブフォームに「所属部署」の中の「プロジェクトチーム」も追加します。
「所属部署」で絞り込んだ選択しとして、コンボボックスで選択させています。
(それ自体は作れています。)

この場合、サブフォームの元テーブルに「プロジェクトID」を追加しようと思っているのですが、これは主キーにする必要はないですよね?(主キーにする必要についてわからなくなってきました…)

11
どんぐりず 2021/01/31 (日) 09:37:45 0029a@1c915 >> 8

主キーは個性を出すための方法ですよね??(適切な表現がわからず個性と書きましたが、独自性?)
だとしたら2つの主キー以外は普通のフィールドで大丈夫ですね。リレーションシップとかの問題が出てくるかと思いましたが、関係ないですよね。失礼しました。

12

ありがとうございます!複数値を持つほうが未経験で、興味を持ったのですが、選択肢はテーブル設定の値集合ソースに記載しておかないといけないんですよね?

値集合ソースにテーブルを設定することも可能です。

設定例
テーフルが、
T_メンバー(※メンバーID 名前 所属部署・・・)
T_部署(※部署ID(数値型) 部署名)
として、
T_メンバー の所属部署フィールドの設定
データ型 数値型
ルックアップ
 表示コントロール コンボボックス
 値集合タイプ テーブル/クエリ
 値集合ソース T_部署
 列数 1
 列幅 0

上記の設定で、下記のような表示になります。
 画像1

①リストフォームでメンバー一覧を表示するとき、所属部署で絞り込みたい時があります。

複数値フィールドでも抽出は可能です。
Accessのクエリで複数のデータが入力されたフィールドを抽出する方法 | できるネット

■T'sWare Access Tips #659 ~複数値フィールドの中の値を条件に抽出するには?~

13
どんぐりず 2021/02/05 (金) 12:30:46 0029a@1c915

本件、ご教示いただきありがとうございます。
結局、作成してみたら個人のフォームの「所属部署」の中にも色々登録しないといけないことがわかって
リンク(中間テーブル)で繋いでサブフォームにしました。

そこで、フォームの中身がごちゃごちゃしてきたので、
所属部署のサブフォームを1つずつタブ切替にしたいと思っています。。
上限は4くらいにしようと思っていますが、作成することはできそうでしょうか?
参照元データが同じなので無理な気もしていますが、可能であれば作成したく。。ご教示ください。