• ベストアンサー

アクセスについて・・・

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

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

  • ベストアンサー
  • 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

  • MS ACCESSにおいてのリレーションシップ設定

    ACCESSを使用してシステムを構築しているのですが、テーブル間のリレーションシップについて疑問があります。 リレーションシップを設定することにより、データベースの整合性を得ることができますが、その他のメリットはあるのでしょうか? ある文献では検索時間の短縮になるとあったのですが、本当なのでしょうか? 通常の表結合クエリーと参照整合性以外の違いはどのようなものでしょうか? 回答をお願いします。

  • Accessの結合線をクエリのデザインビューで削除した場合、リレーションシップにも影響がありますか?

    Accessでクエリを作成時にデザインビューでテーブル間の結合線を削除しました。 リレーションシップで定義した結合線も自動的に削除されてしまうのでしょうか? リレーションシップも自動的に削除されると他のクエリにも影響がでるので大変な事になると思い、危惧しています。 どなたか教えてください。

  • アクセスのクエリーのことで教えてください

     テーブル1とテーブル2があってクエリーでリレーションシップを組むときに  結合プロパティを「テーブル1の全レコードと、テーブル2の同じ結合フィールドのレコードだけを含める。」にして表を作ろうとしたのですが、テーブル2に レコードが無い場合、テーブル1,2を使って作ったクエリー1で表を作り、 ビルドでクエリー1の項目を貼り付けて、計算させると、テーブル2にレコードが無いと空欄になっているためか、計算がうまく行きません。この問題を解決するにはどのような方法をとればよいですか? ほんとにこまったちゃんになっているので教えてください。 

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • Accessリレーションシップ

    Accessにて、 テーブルA(個人情報) ●個人コード ●名前 ●住所  ・  ・ テーブルB(個人ごとの数量管理) ●個人コード ●数量 上記のようなテーブルがあるとします。 これは、1:1のリレーションシップにしたいのですが、 クエリAを作成して ●個人コード(テーブルB) ●名前(テーブルA) ●数量(テーブルB) 個人コードを入力すると、名前を参照するというふうに したいのですが、1:1のリレーションシップだと個人コードの入力時に 参照はできないのでしょうか? 一旦閉じて、開くと参照していますが・・・。 良いご意見がありましたら、よろしくお願いします。

  • 今更ながらAccess2000の結合について

    たとえば下記のようなテーブルがあります。 *得意先テーブル 得意先ID 得意先名称 得意先TEL  ・  ・ *取引履歴テーブル 得意先ID 商品ID 商品 取引日  ・  ・ 上記テーブルの得意先IDを主キーとして、Access2000のリレーションシップの画面で結合させることと、クエリのデザイン画面でテーブルを結合させる事は同じ事をしているのでしょうか? 同じだとすれば、どちらか一方のみを設定すればよいのでしょうか? 違うとすれば、リレーションシップの画面で設定することと、クエリのデザイン画面で設定することの意味の違いを教えていただけないでしょうか? ちょっと混乱しているので、おかしな質問をしておりましたらすみません f^^; どうぞよろしくお願い致します。

  • Access(リレーションシップについて) 

     Win XP Office 2003 Accessを勉強中です。  デザインビューでクエリを作成するときに、関連するテーブルを表示させると自動的に「結合プロパティ」の線が表示されますが、 この表示で自動的に「1対多」を表示する時としない時がありますが、これは何故でしょうか。  これはどこかから設定をしてやるのでしょうか。  また、同じような線としてメニュバーから「リレーションシップ」を表示させることが出来ますが、 内容的には「結合プロパティ」と同じものですが、これは「リレーションシップ」とはどのようなに使い分けるものでしょうか。

  • ACCESSの超初心者です。

    ACCESSの超初心者です。 ACCESS2000のクエリについての質問です。 担当者テーブル(多)対会社テーブル(1) 担当者テーブルの会社コードと会社テーブルの会社コードで連結したクエリ。 このクエリで会社テーブル内の会社名は参照だけで変更不可にしたいのですが 変更できてしまいます。 変更不可にする設定があれば、教えてください。

  • ACCESSのリレーションシップであこる不具合について

    時たま、20人位の受講生を相手にAccessを教えているのですが、 20人に一人か二人くらいの割合で以下のことが起きます。 テーブルが片手で数えられるくらいの数しかないテーブルを リレーションシップで参照整合性のチェックボックスをつけておいて、 しばらく、クエリの話をしたあと改めてリレーションシップを 表示すると、 ・ものすごい数のリレーションシップが組まれている。 ・そのリレーションシップは何回デリートで削除して上書き保存し、 表示しなおしてもものすごい数のリレーションシップが 相変わらず表示される。 ・クエリで何らかの作業をしていても特に支障はない。 具体的なサンプルはあるので理由を教えていただける方 いらっしゃいましたらどうぞご連絡ください。 メールで送ります。  私がどんなにACCESSをいじくり倒しても、 絶対出てこないのですが、ときたまこういう現象を 出してくれる人がいるのでその度その度なやんでいます。 この現象が起きると、あきらめてMDBを削除してもらうか、 そのままあきらめて使用してもらっています。 どうしても原因が知りたいです。

  • Accessのテーブルをリンク

    Accessの初心者です。Accessのテーブルとエクセルをリンクする事はできたのですが、そうすると、Accessのテーブル同士のリレーションシップでができなくなりました。テーブルをリンクさせると参照整合性のリレーションシップは無理ですか?

専門家に質問してみよう