ホーム‎ > ‎IT‎ > ‎Microsoft Office‎ > ‎Access‎ > ‎

1対1リレーションシップ

一対一の関係のテーブルの場合は、
下記のようにクエリで連結すれば一つのテーブルと同じように、入力、更新できます。


Main メインとなるテーブル
ID 数値型 主キー
M1  テキスト型
M2  テキスト型

SubA
ID 数値型 主キー  既定値 は空白
A1 テキスト型
A2 テキスト型

SubB
ID 数値型 主キー  既定値は空白
B1 テキスト型
B2 テキスト型


1)リレーションシップの設定

 Main と SubA を ID 同士で連結
 「参照整合性」「フィールドの連鎖更新」「レコードの連鎖削除」のすべてにチェック
 「結合の種類」で、2番目の「Mainの全レコードと・・・・」の項目を選択する

 Main と SubB でも同様に設定します。

 結合線が、T_Main から サブテーブルへ向かう矢印になっていることを確認してください。(外部結合)
 また結合線の両端に 1 と表示されていることも確認してください。(一対一結合)


2)クエリの設計

 クエリを新規作成して、Main, SubA, SubB を追加します。
 自動でリレーションシップで設定したのと同じように結合線で結合されます。
 Main から、ID とその他のフィールド、SubA, SubB からは、ID 以外のフィールドを
 下のグリッドにドロップして表示させます。

このクエリをフォームやレポートのレコードソースとすれば、一つのテーブルと同様に
入力、更新が可能になります。
また、ID を更新すれば、連動して全てのサブテーブルのID が更新されます。
T_Main のレコードを削除すれば、全てのサブテーブルの関連したレコードも削除されます。

すべて Access が自動でしてくれますので、VBAやマクロは必要ありません。
Comments