• ベストアンサー

UPDATE文で・・・・

VBでUPDATE文を書いて実行したのですが うまく更新されません。 なぜなのでしょうか?教えてください。 SQL = " UPDATE t_tanaorosi SET " sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)" sSQL = "WHERE" sSQL = sSQL & " 実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) 商品名を入力すると自動的に実在庫数が入力されるようになっています。 棚卸数を入力して登録して 同じ商品名を入力すると前回入力した棚卸数の数だけ減って自動に入力されるようにしたいのです。 よろしくお願いします。

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

  • ベストアンサー
回答No.5

sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)" は、展開すると sSQL = sSQL & " 実在庫数=棚卸数 " と言うことですよね。 これでどうですか pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) が気になりますが。

その他の回答 (4)

回答No.4

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"へ

aki08102001
質問者

補足

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

  • sakko99
  • ベストアンサー率63% (19/30)
回答No.3

sSQL の中身をデバックで取得してクエリアナライザで実行してみてください。正しく更新されますか?

noname#22222
noname#22222
回答No.2

SQL = "UPDATE t_tanaorosi SET " & _      " 実在庫数=実在庫数-(実在庫数-棚卸数) "      "WHERE " & _      "実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) ・WHERE の前にブランクがない。 ・UPDATE文が完成していない。 という不具合はあるのではないでしょうか? 質問文のタイプミスでなければ、 ? sSQL WHERE 実在庫数=20 となっていると思いますが?

aki08102001
質問者

補足

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

  • t_nojiri
  • ベストアンサー率28% (595/2071)
回答No.1

コミットしてないとかって事は無いですよね? 更新系のトランザクションはコミット必要ですよ。 しかし、テーブル名もエラーコードも無しでは正直なんとも言えません。