更新不可能なクエリの条件とは?

このQ&Aのポイント
  • 他の人が作成したアクセスのファイルでクエリを編集しようとすると「このレコードセットは更新できません」というエラーメッセージが表示されます。
  • クエリをデザインビューで確認すると、複数のテーブルが繋がっており、フォールドされた式が複数存在します。
  • 更新不可能なクエリを更新可能にするためには、テーブル間の関連付けや主キーの設定などを確認する必要があります。
回答を見る
  • ベストアンサー

更新不可能のクエリの条件を教えてください。

他の人が作ったアクセスのファイルなのですが クエリを開いてデータを編集しようとすると 音が鳴り、左下のステータスバー(?)に 「このレコードセットは更新できません」 となってしまいます。 そのクエリをデザインビューで見ると 二つのテーブルが矢印で繋がっており、 月: Month(T【家計簿】明細!取引日) のような式で作られたフォールドが10個くらいあります。 二つのテーブルそれぞれに主キーはありますが 主キー同士は繋がっていません。 他の人が作った時は2003で作り 私は2007で開いています。 どこをどういじれば、更新可能なクエリになるのか分からないので 更新不可能のクエリの条件を教えてください。 変にいじって戻せなくなりたくないので^^; アドバイスよろしくお願いします。

  • iwueye
  • お礼率100% (168/168)

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

  • ベストアンサー
  • shinkami
  • ベストアンサー率43% (179/411)
回答No.2

このように繋がっている状態をリレーションシップといい ACCESS等リレーショナルデーターベースの最大の特徴です。 一般に繋がっているテーブルの項目は 1方が主キーで、他方は主キーではありません 納品書のテーブルは、 伝票No.、日付、取引先名等のヘッダー項目を構成する部分の納品書テーブルと 品名、数量、単価、金額等一つの納品書に対して、複数のレコードが対応する納品書明細テーブル 当然 納品書明細テーブルには、納品書の主キーに繋がりを持たせるための項目を定義しておかなければなりません。 ここを変にいじるとシステム全体が壊れてしまいます。 !!!危ない危ない!!!

iwueye
質問者

お礼

壊れてしまうのは大変です。気を付けます。 ありがとうございました。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

クエリのデータシート ビューでデータを編集して、基になるテーブルのデータを変更するという操作は、 状況によっては使用できない場合があります。 ここでは、クエリデータを編集できる状況とできない状況、 および基になるデータを編集できるようにクエリの設計を変更する方法について説明します。 http://office.microsoft.com/ja-jp/access-help/HA010097876.aspx 上記をご参考までに。 >変にいじって戻せなくなりたくない ならファイルのコピーを作ってそちらで試せば安全・安心です。

iwueye
質問者

お礼

やはり「クエリのデータを編集できない状況」 というのがあるのですね。 「クエリが SQL クエリの場合」とは どういう事でしょうか? クエリをSQLビューで表示できるのですが、 これは「SQL クエリ」という事になりますか? 頂いたリンク先をよく読んでで見ます。 ありがとうございました。

関連するQ&A

  • クエリ上でのデータ更新

    Accessのクエリで、クエリ実行した画面の抽出されたデータ上で、データの書き換え・更新ができるクエリと、「このレコードセットは更新できません」と左下に記載されてしまい更新できないクエリがありますが、この2つにはどんな違いがあるのでしょうか? おそらく、元になっているテーブルの何かの設定が違うのだろうかと思うのですが、それがよくわかりませんので投稿しました。 よろしくお願いいたします。

  • アクセスの更新クエリについて(親子テーブル)

    はじめまして。 アクセスを勉強しはじめて2週間の初心者です。 説明がわかりずらいかもしれませんが、ご容赦ください。 以下のようなテーブルがあります。 ●親テーブル(装置名称と装置番号の組み合わせが主キー) ・装置キー ・装置名称 ・装置番号 ・収容No-1 ・収容No-2 ●子テーブル(主キー設定なし) ・装置キー(親テーブルの装置キーと参照整合:1対多) ・収容No-3 ・最新情報 ●参照テーブル(主キー設定なし) ・収容No-1 ・収容No-2 ・収容No-3 ・最新情報 子テーブルの最新情報フィールドを参照テーブルの最新情報に 更新する更新クエリを作成したいのですが、うまく実行ができ ません。 クエリの作り方の基本がわかっていないと思いますが、私が作 った方法は、 1.上記3つのテーブルをクエリのデザインビューで表示 2.親テーブルと参照テーブルの収容No-1、2を結合 3.子テーブルと参照テーブルの収容No-3を結合 4.クエリの種類を更新クエリに変更 5.テーブルに子テーブル、フィールドに最新情報を設定 6.レコードの更新欄に[参照テーブル]![最新情報]を設定 です。 ビューで確認すると殆どのデータが空白で表示されております。 どのあたりに悪さがあるかをご教授いただけますと助かります。 ご不明な点がありましたら、何なりとお伝えください。 よろしくお願いします。

  • ACCESS 更新クエリについて

    更新クエリで更新したいのですが、クロス集計クエリの数値を元にテーブルを更新することは出来ないようで、困っています。 なぜそのようなことをしているかと申しますと、 商品品目_個数_コード(主キー) のようにフィールドを持っているのですが、 印刷に関しては品目ごとに印刷したい、ということで 一度クロス集計クエリ(TRANSFORM)で りんご_ばなな_ぶどう_コード(主キー) 数値_数値_数値_数値 のような並びにして、テーブル作成クエリでテーブルを作成し そのテーブルをレポートに使用しています。 数値などが変わった場合その作成したテーブルの数値を 作成元になったクロス集計クエリで更新したいのですが、出来なくて困っています。 テーブル作成クエリで上書きすると、古いデータが消えてしまうため 何か良い方法はないかと思っています。 回答のほどお願いします。

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。

  • access クエリで集計した数値を別クエリで使いたい

    access2003で2000ファイル形式で以下のものを作っています。 テーブル「A」(フィールドは登録番号(主キー)、 書名) 「B」(登録番号(主キー)、 書名) がある。Aの「登録番号の最大値」(100とする)をクエリ(クエリ名「集計クエリ」)で集計して得た。 テーブルBの登録番号(1~30とする)を更新クエリで(1+100 ~ 30+100)に更新したい。そこでデザインビューで登録番号フィールド(テーブルB)の「レコードの更新」欄にビルダーで「[B]![登録番号]+[集計クエリ]![登録番号の最大値]」と入力して実行したら 実行できなかった。(仕方ないので「[B]![登録番号]+100」として実行したら更新できた。)今後もあるので「集計クエリ」で得た値を直接呼んで、更新クエリを実行したいのだが・・・。 わかりにくい質問で恐縮です。ご理解頂けたならば、ご教授ください。

  • 更新クエリのキー違反がどれだかを調べる方法は

    更新クエリのキー違反がどれだかを調べる方法はないですか? 「更新クエリですべてのレコードを更新できません。 0個のフィールド型変換エラー、2件のレコードでキー違反、 0件レコードでロック違反、0件レコードで入力規則違反が発生したためレコードを更新できませんでした」 となるのですが、 「2件のレコードでキー違反」がどれなのかって元テーブルをじっくり眺めて探すしかないのでしょうか? 手作業と目で探してるのですが、見つけられません・・・

  • 更新クエリでキー違反

    クエリAのあるレコードからテーブルBのレコードにデータを流そうとします。 テーブルBのレコードにデータがちゃんと入っている と上手くデータが流れて更新されるのですが、IDと 名前しか入っていなかったりするとキー違反になるのです。 とても抽象的ですが、 どうして大丈夫なときとダメなときが発生すると 考えられますか?

  • 更新クエリがわからない

    windows-xp、Access2003を使っています。 参考書に載っている更新クエリは「同一のテーブル内でデータを更新する」という内容で載っているのを見ました。 が、そうではなく・・・ 更新クエリを作成すると「レコードの更新」という欄が出てくるのですが、そこに、別のテーブルや別のクエリのデータを”ビルド”で作成することはできないのでしょうか? 試みたのですが、”パラメータの入力”というものが出てきてしまいました。 ついでにおわかりになれば、これも教えてください。 ↓↓↓ テーブルAとテーブルB(或いはクエリB)に、同じIDをもつデータがあります。そこで、テーブルAの指定するフィールドへ、テーブルBの新しいデータを入れ込みたい(更新)させたい。 すみませんが、宜しくお願い致します。

  • Access2000 の更新クエリでカウントアップ

    初歩的なことだと思うのですが、 Access2000を利用し、 あるテーブルのAというキーのレコードの数値項目2つを、 更新クエリを動作させるたびに、1づつカウントアップさせたいのですが、 どのように記述するのでしょうか? キー項目 項目1 項目2 タイムスタンプ A     0   1  2007・・。 ここで、更新クエリを起動して、 A     1   2  2007・・・ ここで更新クエリを起動して A     2   3  2007・・・ 更新クエリのレコードの更新欄にはどのように記述すれば、正しく動作するかお教えください。 (タイムスタンプは、Now()を設定しています) 宜しくお願いします。

  • 選択クエリを基に不一致クエリを作成したけれど...

    識者の力をお借りしたく質問いたします。 質問ページから不一致クエリに関する内容を参考に、ある不一致クエリを作成しています。 しかし、出来るはずの方法で結果が正しく表示されず途方にくれています。 処理の内容としては、あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいというものです。 通常不一致クエリはテーブルの主キーを基に作成するものと私は理解しているのですが、今回の処理では基のテーブルに主キーが無く、(作成できない事情があり)クエリで無理矢理主キーもどきのものを作りました。 クエリで作成したのは、数字6桁(最大で)の後ろにチェックディジットとしてアルファベット1文字を追加した計7文字のフィールドです。 例:131401A 不一致を抽出したい基となる2つのテーブルに対しこのクエリを作成しました。 この2つのクエリから不一致クエリで差分を抽出し、基のテーブルに追加クエリで追加したいのですが、どうやっても不一致項目が表示されません。 根本的にクエリからの不一致クエリは作成できないのでしょうか? よろしくお願いいたします。 ■状況 テーブル1/テーブル2(基となるテーブル、主キー無し) クエリ1/クエリ2(テーブル1/テーブル2のレコードにコードを追加するクエリ) コード1/コード2(クエリ1/クエリ2で作成したコード)例:131401A 不一致クエリ テーブル2 → テーブル1 (リレーションシップ) コード2 条件:Not Null ※テーブル2の方が最新レコードが入っているので、テーブル2の差分レコードをテーブル1に追加したいというのが基本的な内容です。 よろしくお願いいたします。

専門家に質問してみよう