【Access 2013 vba】
テーブルのあるレコードを削除しても、そのIDを使用している別テーブルには影響を与えたくない場合、つまり、別テーブルのIDの値は消したくない場合には、どのようなリレーションシップにしたらよいでしょうか。
因みに、このテーブルの編集画面フォームAでは、3つのクエリーを作成しその最後のクエリーQ3をレコードセットとして参照しています。
以下参照
【Table1】
・受注ID(主キー)
・日時
・部屋ID(Ex.Key)
【Table2】
・部屋ID(主キー)
・建物ID(Ex.Key)
・部屋の情報
【Table3】
・建物ID(主キー)
・建物の情報
・所有者ID(Ex.Key)
【Table4】
・所有者ID(主キー)
・所有者の名前
<<Q1>>→Table1+Table2
<Table1>
・受注ID
・部屋ID2(外部キー)→Table2部屋の部屋ID ⇐ ※ ここが、問題のリレーションシップです。
<Table2>
・部屋ID...主キー
<<Q2>>→Q1+Table3
<Q1>
・Q1のTable2の建物ID(外部キー)→Table3の建物ID
<Table3>
・建物ID
<<Q3>>→Q2+Table4
<Q2>
・Q2のTable3の所有者ID(外部キー)→Table4の所有者ID
<Table4>
・所有者ID
このようにクエリーを作成し、Q3をフォームのレコードソースとしたフォームAを使用しています。
このフォームで、<<Q1>>の※印の行のTable2から取得するIDをTable1の項目「部屋ID2」に保存していますがTable2の方にあるレコードを削除しそのIDがなくなっても、Table1には影響しないようにしたいのです。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
Q1 で、Table2との結合を外部結合にすれば、Table2に対応する部屋IDがなくても影響は受けません。
当然、Table2の部屋データは参照できません。
ただ、参照先のない外部キーを残しておくのは通常は意味がないと思います。
残しておきたいなら、マスター側のレコードは削除せずに、もう使用しないという意味のフィールドを持たせてそこにフラグを立てるという方法にすると思います。
例えば、社員マスターで、社員が退職しても削除せずに、退職フラグを立てる、あるいは退職日を入力するというように。
おそらくアパート等の賃貸管理だと思いますが、その部屋を使用しなくなった日時と理由を格納するフィールドを用意して管理するのがいいと思います。、
ご回答ありがとうございます。
おすすめの方法を早速、テーブルに反映させ、それに合わせた処理を作りたいと思います。
とても参考になりました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 中国語 五經異議疏證について 1 2022/03/30 19:26
- その他(IT・Webサービス) ★回答者をブラック登録する方法はありませんか? 3 2023/07/28 20:35
- Oracle sqlで質問です。 Aテーブルの情報をBテーブルに更新かけたいです。 やりたいことは、Bテーブルの受 1 2023/05/17 11:17
- SQL Server ACCESSで表が作りたく、そのためのSQL文や設定方法を教えてください。 1 2022/08/15 12:28
- SQL Server ACCESSで複数テーブルを結合して、リストを作る方法を教えてください。 2 2022/08/12 19:32
- SQL Server ACCESSで3ファイルを結合して、表を作成するやり方を教えて下さい。 17 2022/08/15 20:34
- その他(データベース) accessについて 2 2022/05/31 16:58
- Access(アクセス) ACSESS初心者です マンション管理をACCESSで出来ないかとチャレンジしています。 リレーショ 3 2022/10/08 11:45
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- Access(アクセス) Accessの参照フィールドの列がずれてしまいます 1 2023/07/19 15:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データの二重表示の原因
-
Accessでの排他制御
-
Access 削除クエリが重い
-
3つ以上のテーブルをUNIONする...
-
Accessにインポートしたら並び...
-
accessで検索&入力 データの...
-
数百万件レコードのdelete
-
Access カレントレコードがあり...
-
非連結サブフォームのレコード...
-
C# Windows Forms で、Accessみ...
-
Access 1レコードずつcsvで出力...
-
Access VBA Me.Requery レコー...
-
一部重複しているレコードの削除
-
Accessでのレコードの削除時の...
-
ManagementStudioからのデータ削除
-
レコードロックする方法
-
テーブルのレコード削除ができ...
-
AccessのSQLについて教えてくだ...
-
ACCESSのBookmarkプロパティの...
-
(ACCESS)並び替えをしないで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Accessにインポートしたら並び...
-
データの二重表示の原因
-
2つの項目が重複するレコード...
-
3つ以上のテーブルをUNIONする...
-
数百万件レコードのdelete
-
Access VBA Me.Requery レコー...
-
非連結サブフォームのレコード...
-
Access 削除クエリが重い
-
ACCESSのBookmarkプロパティの...
-
Access 1レコードずつcsvで出力...
-
ManagementStudioからのデータ削除
-
Accessの重複クエリで最小以外...
-
Accessでの排他制御
-
Accessで重複したデータを一件...
-
(ACCESS)並び替えをしないで...
-
フォームからのレコード削除に...
-
SQLServerで同一条件レコードの...
-
Accessでの禁止文字チェック
-
Accessでレコードが更新された...
-
テーブルのレコード削除ができ...
おすすめ情報