locked
Microsoft Access データ操作について RRS feed

  • 質問

  • Microsoft Access のデータ操作で、リレーションシップ を設定して複数のテーブルで、一つの操作で更新すればその全てのテーブル内容が更新又は削除されるようにしたいのですが。なかなかうまくいきません。

    具体的には同窓会のデータで、小学校、中学校、高校 の各テーブルを作成して、1人の氏名のレコードのフィールド内容、例えば<備考>の内容を更新したい時、中学校のデータだけ更新すれば同一人物の小学校、高校まで全て自動的に更新されるという設定にしたい場合。

    この場合、リレーションシップ設定だと思うのですが、これがなかなかうまくいきません。各テーブルの<氏名>フィールドを[主キー]設定にしても不可です。

    <リレーションシップの編集>で[参照整合性]にチェック入れて[フィールドの連鎖更新][レコードの連鎖削除]にもチェック。[OK]ボタン押すと、

    <このリレーションシップを作成して、参照整合性を設定できません。リレーションテーブルの全てのレコードのデータについて、関連するレコードが主テーブルにあるようにしてください。>とのメッセージが出る。

    この件で解る方が居られたら教えて下さい。

    Access 2013  をインストールして使っていますが、データはAccess 2000 で作成した物です。

    2014年11月25日 4:41

すべての返信

  • 答えになっていなくて申し訳ありませんがリレーションシップで行うべき内容では無い様に思われます。この様な場合、同窓会の会員に対して基本情報のテーブルを作成し、そこに氏名、住所等の情報とともに「備考」をもたせ、小学校、中学校、高校の各テーブルでは基本情報のID値を格納するようにするべきです。今からでも各テーブルの<氏名>フィールドを氏名マスタのIDを格納する様に仕様を変更し、アプリケーション側では新規に作成した氏名マスタをJOINして参照するように変更した方が良いと思います。そうすればそもそも情報は一個だけなので問題となりえなくなります。

    2014年12月6日 5:12