一対一の関係のテーブルの場合は、 下記のようにクエリで連結すれば一つのテーブルと同じように、入力、更新できます。 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やマクロは必要ありません。 |