• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Access更新クエリについて教えて下さい)

Access更新クエリについて教えてください

このQ&Aのポイント
  • アクセス超初心者でもわかる、Accessの更新クエリについて解説します。
  • 入庫クエリと出庫クエリを組み合わせて在庫数を計算する方法をご紹介します。
  • 部品テーブルの現在庫数を更新する方法について詳しく解説します。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.3

UPDATE 部品テーブル AS A INNER JOIN 在庫クエリ AS B ON A.ID=B.ID SET A.現在庫=B.在庫数 SQLビューで上記SQLを入力します。テーブル、クエリ、フィールドの 名前は実物に合わせて変更してください。

cuxxx
質問者

お礼

ご回答ありがとうございます。 nda23さんのご回答を参考にし、SQLを作成しましたが、 実行すると、「更新可能なクエリでなければなりません」 というエラーが出てしまいます。 ご指導のほど、よろしくお願いします。

cuxxx
質問者

補足

ご回答ありがとうございます。 nda23さんのご回答を参考にし、SQLを作成しましたが、 実行すると、「更新可能なクエリでなければなりません」 というエラーが出てしまいます。 部品テーブルがリレーションシップの1側のテーブルだから なのでしょうか? ご指導のほど、よろしくお願いします。

その他の回答 (4)

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.5

>リレーションシップで組んだ 関係ありません。 >複数フィールドで主キーを構成していませんか? 例えば、部品テーブルはIDと部品名で主キーになっていないかという ことです。もし、このような状態ですと、IDだけでは一意にならない ため、IDだけの結合式では多:多の関係にしかなりません。 テーブルをデザインビューで開いた時、鍵マークのついたフィールドが 2ヵ所以上ないか確認してください。

cuxxx
質問者

お礼

お返事ありがとうございます。 部品テーブルの鍵マークのついたフィールドは 1箇所でした。 色々調べましたが、nda23さんのアドバイス通りで 更新されるはずですよね。 テーブルやクエリを作成していく中で、どこか おかしなところがあるのかもしれませんね。 もう一度調べ直してみたいと思います。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.4

>部品テーブル AS A INNER JOIN 在庫クエリ AS B ON A.ID=B.ID これで、A側(部品テーブル)が一意にならないとすると、IDが 主キー(あるいは重複不許可のインデックス)になっていないと 考えられます。(複数フィールドで主キーを構成していませんか?) >SET A.現在庫=B.在庫数 エイリアスによる修飾が逆になっていませんか? 在庫クエリ側(B)は「多」なので、左辺には使用できません。 >リレーションシップの1側のテーブルだからなのでしょうか? 違います。前にも述べましたが、一:一か一:多の一側の方しか 更新できません。よって、「1側のテーブルを更新する」は可能な 行為なのです。ON 句で指定する結合条件で「一」であるためには 一意キーを指定しなければなりません。

cuxxx
質問者

お礼

詳しい説明、本当にありがとうございます。 A側(部品テーブル)のIDを主キーに設定しています。 インデックスは重複無しになっています。 >複数フィールドで主キーを構成していませんか? すみません、勉強不足で理解できないのですが、 部品テーブルにリレーションシップで組んだ他側のフィールドが あることがいけないのでしょうか? そのフィールドを削除してクエリを実行しても、同じでした。 何度も申し訳ありません。

noname#182251
noname#182251
回答No.2

DBの基本構造は、まずテーブルがあり、それに対する操作としてクエリがあります。従って質問も 1.テーブルとそのフィールド 2.クエリ(できればSQL文で) のような順で説明されないと、判らない(判りづらい)ことになります。 ご質問の件は 1.部品テーブル 部品ID、部品名 2.入出庫テーブル 部品ID、入出庫日、数(プラスで入庫、マイナスで出庫) 上記テーブルを適当なクエリで操作することで処理できそうな気もするのですが。

cuxxx
質問者

お礼

ご回答ありがとうございます。 わかりにくい説明文で申し訳ありませんでした。 ご指摘ありがとうございました!

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

ポイントは「更新されるテーブル」:「更新するクエリ」の関係が 1:1 あるいは 1:多 になっている必要があります。 一意性はプライマリキー、または重複を許さないインデックスにより 認識されます。 仮に部品テーブルのプライマリキーがIDとすると、在庫クエリにも IDにあたる項目が必要です。この場合、「現在庫テーブル」を作る 意味はありません。

cuxxx
質問者

お礼

早速のご回答ありがとうございます。 現在庫テーブルは必要ないのですね。 部品テーブルのIDを主キーに設定しています。 在庫クエリは ID 部品名 入庫数量の合計 出庫数量の合計 在庫数 で 部品テーブルの主キーにあたる項目も設定してあります。 更新クエリを作成する際、レコードの更新はどのように 入力すればよいのですか? 初歩的な質問で、申し訳ありません。 よろしくお願いします。

関連するQ&A