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

VBでUPDATE文を書いて実行したのですが
うまく更新されません。
なぜなのでしょうか?教えてください。

SQL = " UPDATE t_tanaorosi SET "
sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)"
sSQL = "WHERE"
sSQL = sSQL & " 実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value)

商品名を入力すると自動的に実在庫数が入力されるようになっています。
棚卸数を入力して登録して
同じ商品名を入力すると前回入力した棚卸数の数だけ減って自動に入力されるようにしたいのです。
よろしくお願いします。

A 回答 (5件)

sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)"


は、展開すると
sSQL = sSQL & " 実在庫数=棚卸数 "
と言うことですよね。

これでどうですか

pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value)
が気になりますが。
    • good
    • 0

sSQL = " UPDATE t_tanaorosi SET "


sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)"
sSQL = sSQL & "WHERE"
sSQL = sSQL & " 実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value)

に変更してみてください。
1行目 SQL = を sSQLへ
2行目 sSQL = "WHERE" を sSQL = sSQL & "WHERE"へ

この回答への補足

ご指摘の通り変更してみましたが
駄目でした。
棚卸数は画面で入力した数がDBで更新されていますが
実在個数は減りません。
どこがおかしいのか分かりません。
教えてください。

補足日時:2006/06/16 23:33
    • good
    • 0

sSQL の中身をデバックで取得してクエリアナライザで実行してみてください。

正しく更新されますか?
    • good
    • 0

SQL = "UPDATE t_tanaorosi SET " & _


     " 実在庫数=実在庫数-(実在庫数-棚卸数) "
     "WHERE " & _
     "実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value)

・WHERE の前にブランクがない。
・UPDATE文が完成していない。

という不具合はあるのではないでしょうか?
質問文のタイプミスでなければ、

? sSQL

WHERE 実在庫数=20

となっていると思いますが?

この回答への補足

ご指摘の通り変更してみましたが
駄目でした。
棚卸数は画面で入力した数がDBで更新されていますが
実在個数は減りません。
どこがおかしいのか分かりません。
教えてください。

補足日時:2006/06/16 23:39
    • good
    • 0

コミットしてないとかって事は無いですよね?



更新系のトランザクションはコミット必要ですよ。

しかし、テーブル名もエラーコードも無しでは正直なんとも言えません。
    • good
    • 0

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

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