• ベストアンサー

アクセスについて・・・

アクセスでリレーションシップで、参照結合するとテーブル上では、プラスマークが横のついて連動しますが、クエリなどであとから変更したものはテーブルに反映されないのですが・・ (つまりクエリで変更したものは、テーブルに反映させるのはできないのでしょうか?)

質問者が選んだベストアンサー

  • ベストアンサー
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.3

> クエリなどであとから変更したものはテーブルに反映されないのですが・・ 基本的に「リレーションシップウィンドウ」で設定したリレーション(結合線)と、クエリのデザイン上で作成した結合線は全くべつものです。(ただ、クエリ上の結合線の最初の雛型は「リレーションシップウィンドウ」で設定した結合線ですが) クエリデザイン上に作成される結合線は、問い合わせするためだけ、つまり仮想表を作成するためだけの一時的な結合線です。 対して、「リレーションシップウィンドウ」での結合線はmdbファイルの根幹を担う(システムの構造を決定付ける)非常に重要な結合線です。 なので、多分ですが、クエリで変更した設定はテーブルのプラスマークには反映されない気がします。 検証してないので、間違ってるかもしれませんが。 クエリのデザインで結合線の設定が変更できるのは外部結合と内部結合についてだけで、参照整合性については「リレーションシップウィンドウ」だけでしか設定できません。「リレーションシップウィンドウ」で設定したリレーションがそのmdbファイルの基本的なリレーションですからそこを変更しないと多分テーブルのプラスマークに反映されないのではないでしょうか? これも検証してないのでわかりませんが… (すみません。) ちなみにクエリで変更したリレーションが他の個所にも反映されると言うことは、データベースシステム(mdb)の内部構造がクエリを作成するたびに変わってしまうということですから、他のクエリもおかしくなる、フォームも動作しなくなるなどが起こります。システムを完成させることは永遠に不可能となります。 Accessを使い込んでいくと意味がわかるようになります。 ですので、万が一、設定変更が他の個所と連動できたとしても(多分できないとは思いますが)、設定は変にいじらない方がいいと思います。

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

リレーションシップの参照整合性・フィールドの連鎖更新・レコードの連鎖削除はどうなっていますか。 チェックを入れればレコードに反映されるはずですが。 テーブル同士のリレーションに整合性が取れていればですが。 ツールのリレーションシップで確認してみてください。

  • yomo3
  • ベストアンサー率32% (88/269)
回答No.1

こんばんは。 弱ったな。 参照結合というのは、文字通り「参照」するための結合なので、変更を反映させないことが前提です。 1対1の結合で、変更がクエリの状態を変更させないデータ構造の場合、クエリでの変更が可能になります。 このことをわかりやすく説明する能力は、私にはありませんが……。 例えば、 Table1  ID  Name Table2  ID  Memo という二つのテーブルがあって、IDでリンクしているQuery1というクエリがあるとします。 Table1はIDとNameが1対1で対応する基本テーブルです。 Table2には同一IDのMemoがたくさんあります。 Query1のIDを変更すると、リンクフィールドが変更されてしまったQueryは非常に困った状態になることは予想できますね。ですから、IDは変更できません。 Nameを変更したら、対応するIDをもつNameを全て変更しなければならず、やはりクエリは困ってしまいます。 Memoは単純にIDに対して1対1に対応しますから、変更は可能ですが、他のフィールドとの兼ね合いでロックがかかってしまいます。 こんな簡単なテーブルでは実際は変更できてしまうかもしれませんが、そういった理由です。 解決法は、クエリ構造を練り直すか、フォームを使ってテキストボックスの変更をプログラム的にテーブルに反映させるということぐらいでしょうか。

関連するQ&A