- ベストアンサー
UPDATE文で・・・・
VBでUPDATE文を書いて実行したのですが うまく更新されません。 なぜなのでしょうか?教えてください。 SQL = " UPDATE t_tanaorosi SET " sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)" sSQL = "WHERE" sSQL = sSQL & " 実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) 商品名を入力すると自動的に実在庫数が入力されるようになっています。 棚卸数を入力して登録して 同じ商品名を入力すると前回入力した棚卸数の数だけ減って自動に入力されるようにしたいのです。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
sSQL = sSQL & " 実在庫数=実在庫数-(実在庫数-棚卸数)" は、展開すると sSQL = sSQL & " 実在庫数=棚卸数 " と言うことですよね。 これでどうですか pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) が気になりますが。
その他の回答 (4)
- chibita_papa
- ベストアンサー率60% (127/209)
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"へ
- sakko99
- ベストアンサー率63% (19/30)
sSQL の中身をデバックで取得してクエリアナライザで実行してみてください。正しく更新されますか?
SQL = "UPDATE t_tanaorosi SET " & _ " 実在庫数=実在庫数-(実在庫数-棚卸数) " "WHERE " & _ "実在庫数=" & pvBase.CvtSQL(TDBGrid.Columns("実在庫数").Value) ・WHERE の前にブランクがない。 ・UPDATE文が完成していない。 という不具合はあるのではないでしょうか? 質問文のタイプミスでなければ、 ? sSQL WHERE 実在庫数=20 となっていると思いますが?
補足
ご指摘の通り変更してみましたが 駄目でした。 棚卸数は画面で入力した数がDBで更新されていますが 実在個数は減りません。 どこがおかしいのか分かりません。 教えてください。
- t_nojiri
- ベストアンサー率28% (595/2071)
コミットしてないとかって事は無いですよね? 更新系のトランザクションはコミット必要ですよ。 しかし、テーブル名もエラーコードも無しでは正直なんとも言えません。
補足
ご指摘の通り変更してみましたが 駄目でした。 棚卸数は画面で入力した数がDBで更新されていますが 実在個数は減りません。 どこがおかしいのか分かりません。 教えてください。