プロが教えるわが家の防犯対策術!

アクセス超初心者です。

入庫クエリでIDごとの入庫数を合計、
出庫クエリでIDごとの出庫数を合計し、
在庫クエリで在庫数を計算しています。
(入庫クエリの入庫数の合計)-(出庫クエリの出庫数の合計)

部品テーブルがあり、現在庫フィールドを作っています。
ID 部品名 現在庫
1  AAA   10
2  BBB   5

在庫クエリの在庫数を、部品テーブルの現在庫数に
代入したいと考えています。
在庫クエリを使い、テーブル作成クエリで現在庫テーブルを作成、
現在庫テーブルから更新クエリで、部品テーブルの現在庫数を
更新できるのではないかと考えたのですが、
つまづいてしまいました。

現在庫テーブル
ID 在庫数

現在庫テーブルの在庫数を、IDごとに部品テーブルの現在庫に
置き換えることは可能ですか?
また、その他よい方法がありましたら、教えて下さい。

ご指導のほど、よろしくお願いします。

A 回答 (5件)

UPDATE 部品テーブル AS A INNER JOIN 在庫クエリ AS B


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

この回答への補足

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

補足日時:2009/07/30 16:27
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/30 21:08

>リレーションシップで組んだ


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

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

お礼日時:2009/07/31 15:41

>部品テーブル AS A INNER JOIN 在庫クエリ AS B ON A.ID=B.ID


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

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

お礼日時:2009/07/31 13:10

DBの基本構造は、まずテーブルがあり、それに対する操作としてクエリがあります。

従って質問も
1.テーブルとそのフィールド
2.クエリ(できればSQL文で)
のような順で説明されないと、判らない(判りづらい)ことになります。
ご質問の件は

1.部品テーブル
部品ID、部品名

2.入出庫テーブル
部品ID、入出庫日、数(プラスで入庫、マイナスで出庫)

上記テーブルを適当なクエリで操作することで処理できそうな気もするのですが。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/07/30 16:33

ポイントは「更新されるテーブル」:「更新するクエリ」の関係が


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

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

お礼日時:2009/07/30 13:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す