※ ChatGPTを利用し、要約された質問です(原文:マスターのあるレコードを削除しても(修正))
マスターレコードの削除方法とリレーションシップについて
このQ&Aのポイント
マスターレコードを削除しても、別テーブルに影響を与えずにIDを保持する方法について教えてください。
Access 2013 VBAでテーブルのレコードを削除する際、リレーションシップを設定している場合に影響を与えずにIDを保持する方法について教えてください。
テーブルのレコードを削除しても、関連する別テーブルのIDを消さずに保持する方法について教えてください。
【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には影響しないようにしたいのです。
よろしくお願いします。
お礼
ご回答ありがとうございます。 おすすめの方法を早速、テーブルに反映させ、それに合わせた処理を作りたいと思います。 とても参考になりました。