dポイントプレゼントキャンペーン実施中!

Access2003を利用しております。

店舗在庫の管理をする為に在庫表を作りました。
仕入、販売などで在庫が上限した際に、商品のJANコードをもとに数量を変更したいと思っています。

テーブル、クエリは以下の通りです。

<テーブル>
T_main(全てのデータが入っています)
T_販売JAN(A列にJANコード、B列に変動数を入力)

<クエリ>
更新クエリで、T_mainのJANコードと、T_販売JANのJANコードは結合しており、T_mainの在庫数をフィールドとし、レコードの更新には下記関数を入力しております。

DSum("[在庫数] - T_JAN販売 , [在庫数]" , "T_JAN販売" , "[JANコード]=" & [JANコード])

在庫数はどちらも数値(長整数型)としております。

クエリを実行すると『更新クエリですべての更新ができません。』と表示され、T_mainの在庫数が空欄になってしまいます。

今まで全てGoogle先生に学んできましたが今回ばかりは訳が分かりません。
どこがおかしいのかわかる方教えてください。

質問者からの補足コメント

  • 更に、更新区分(販売、仕入)等の履歴も残す方法も教えていただければ幸いです。

      補足日時:2017/04/24 17:48

A 回答 (3件)

まず


DSum("在庫数" , "T_JAN販売" , "[JANコード]=" & [JANコード])
で希望する値はすべて出てきますか?
「T_JAN販売」にはないJANコードがあるのでは?

これで計算されませんか?
[T_main].[在庫数] - Nz(DSum("在庫数" , "T_JAN販売" , "[JANコード]=" & [JANコード]))
    • good
    • 0
この回答へのお礼

DSum("在庫数" , "T_JAN販売" , "[JANコード]=" & [JANコード])

上記では、最初に確認される『〇件のレコードを更新します。』での件数は合っているのですが、『〇個のフィールドで型変換エラー』となってしまいます。

教えていただいた式を2件とも試してみましたが、同様のエラーが表示されてしまします。
型はJANコードがテキスト型、数量が長整数型を使用指定おります。

型を変えた方がよろしいのでしょうか?

お礼日時:2017/04/25 14:56

別で同じ質問をされているようなのでそちらで回答があると思いますが



まず更新クエリから一旦、選択クエリに変更してください。
フィールドにDSum("在庫数" , "T_販売JAN" , "[JANコード]='" & [JANコード] & "'")
を入れて「T_販売JAN」の在庫数の合計が表示されるか確認してください。
テキスト型と数値型では条件の指定が違います。
表示されるのであれば更新クエリに戻し
[T_main].[在庫数] - Nz(DSum("在庫数" , "T_販売JAN" , "[JANコード]='" & [JANコード] & "'"))
を実行してみて下さい。
    • good
    • 0
この回答へのお礼

何度もご回答頂き誠にありがとうございます。
選択クエリに変更し、教えていただいた方法を試したところ思っていたことができました。
本当にありがとうございました!!

お礼日時:2017/04/25 16:47

"[在庫数] - T_JAN販売 , [在庫数]"というフィールドがないからだと思います。



[T_main].[在庫数] - DSum("在庫数" , "T_JAN販売" , "[JANコード]=" & [JANコード])
    • good
    • 1
この回答へのお礼

ご回答ありがとうございます。
早速試してみましたが同じ結果でした。型は同じはずなんですが、、、
式を見てできるような気がしたんですが、間違いは他にあるのでしょうか?

お礼日時:2017/04/25 13:42

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