Microsoft Access 掲示板

3つ以上のテーブルからなるクエリについて

4 コメント
views
4 フォロー

Accessを始めたばかりの初心者です。
疑問点が一つありますので教えて頂きたいです。

テーブル3つを組み合わせてクエリを作成しました。
しかしクエリを更新しようとするとレコードセットが更新できませんというメッセージが出ます。
調べると恐らくテーブルのリレーションシップに問題があると思います。

テーブル詳細です。
☆テーブル1
社員番号:数値型(主キー:重複なし)
氏名:テキスト型
在籍区分:テキスト型

☆テーブル2
社員番号:数値型(主キーなし)
登録日:日付型
郵便番号:数値型
住所:テキスト型

☆テーブル3
社員番号:数値型(主キーなし)
異動日:日付型
異動部署:テキスト型
異動役職:テキスト型

リレーションシップでは
テーブル1→テーブル2(1対多)
テーブル1→テーブル3(1対多)
となっております。
全て社員番号で結合しています。
テーブル2と3は異動や住所の登録が引っ越しなどが複数あるため重複できるよう主キーを無しにしています。

このテーブルの組み合わせでクエリを作ろうとしてもレコードセットが更新できません。
どのように設計すればよいのでしょうか?
初歩的な質問で申し訳ありませんが教えて頂けると嬉しいです。

訂正箇所や質問などありましたらご指摘お願いします。

Access初心者
作成: 2021/09/03 (金) 10:27:51
通報 ...
1

現状だと下記のようなリレーションになっています。

テーブル2 多←1 テーブル11→多 テーブル3

このようなリレーションだとテーブル2とテーブル3は多対多の関係になるので、更新できないクエリになります。
また、データとしても重複が発生するので意味のないものになります。

3つのテーブルを一つの画面で更新できるようにするには、メイン/サブフォーム形式にするといいでしょう。

テーブル1 から単票フォームを作成して、そこに、
テーブル2、テーブル3からそれぞれ帳票フォームを作成してサブフォームとして埋め込みます。

2
Access初心者 2021/09/03 (金) 13:24:04 3e392@b524f

hatena様
回答いただきありがとうございます。
このクエリをもとにレポートを出したいのですがレポートも同じようにサブフォームを埋め込めばよいのでしょうか?
フォームで情報を編集した後このクエリを使って最終的にはレポートを印刷したいと思っています。
そのレポートにはテーブル1.2.3のデータが必要となります。
情報不足で申し訳ありませんが宜しくお願い致します。

3
Access初心者 2021/09/03 (金) 13:33:34 3e392@b524f

連投申し訳ありません。
レポートの件ですが作成しなくてもよくなったので取消いたします。
テーブル1のフォームにテーブル2.3のサブフォームを埋め込むというアドバイスを頂き誠にありがとうございました。
こちらで引き続き作成していきたいと思います。
こちらのスレは解決とさせていただきます。
ありがとうございました。

4

解決済みとのことですが、レポートの場合は、サブレポートとして埋め込むことになります。