ADO初心者の旗国丸です。
環境は
VB6
Microsoft ActiveX Data Objects 2.1 Library (ADO)
SQLsever2000
ユーザ名 sa
パスワード sa
テーブル t_Data
フィールドID Codeはint型 , Nameはvarchar型 , Tankaはmoney型
txtcode.textはコードの入力
txtname.textとtxttanka.textはNameと単価の更新するデータを入力
これでまずMARCYRYサーバ(事務所内のサーバ)のSQLsever2000に接続し
コードを入力してそのコードと一致するテーブルのレコードを
cn.excute("update t_data set Name = '"& txtname.text &"' , Tanka = '"& txttanka.text &"' where Code = '"& txtCode.text &"' ")の文で
更新を行いたいのですが。
エラー、varchar型からmoney型への列Tankaの暗黙的変換はできません、このクエリーを実行するのはConvert関数を使ってくださいとでます。どうしたら
いいのでしょうか。ちなみに'"& txttanka.text &"'の所を1や2と言った数字にするとうまく更新できます。insertのほうも同じエラーです。
お手数ですがアドバイスをいただけたら幸いです。
要するに、Tankaはmoney型でtxttanka.textはvarchar型だから
明示的にConvert関数を使って型変換をしなさいと言っている。
実際にこれで良いかどうかわからないけど、考え方として
txttanka.textの代わりに
Convert(txttanka.text,money)
とか何とかやればいいのでは。
money型やint型といったの項目の場合、
シングルコーテーションはいりませんので
下記の様に修正すると大丈夫だと思います。
cn.excute("update t_data set Name = '"& txtname.text &"' , Tanka = "& txttanka.text &" where Code = "& txtCode.text &" ")
それとSQL文を記述する前にSQLseverのクエリーアナライザで
一度実行してみたらいかがでしょうか?
皆様のアドバイスで解決する事ができました。
ありがとうございました。我龍院忠太様、VFR様のおっしゃる通りでした。
>解決する事ができました
・・・何かやり忘れてない?
解決表示をするのを忘れていました。
ちなみにVFR様の言うとおり("update t_data set Name = '"& txtname.text &"' , Tanka = "& txttanka.text &" where Code = "& txtCode.text &" ")で解決しましたことを報告します。
皆様ありがとうございました。
ツイート | ![]() |