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

VBを利用してのSQL文に変数を使いたいのですが記述方法が良くわかりません。
まず
dim a as string
dim b as integer
dim c as integer
a="AAAA"
b=10
c=23500
として
テーブルZの項目1が nvarchar 項目2が tinyint 項目3がrealであった場合
sql文の記述方法をWebで探していると
文字列変数ならシングルクォーテーションでくくって代入
数値変数ならダイレクトに代入というようにとれるところがあったので下記の
様に記述すると更新されません
sqlstr=("UPDATE テーブルZ set 項目1='a',項目2=b,項目3=c where 項目=1")
下記のように分割してそれぞれひとつづつのテストすると更新できます
sqlstr=("UPDATE テーブルZ set 項目1=" & a & " where 項目=1")
sqlstr=("UPDATE テーブルZ set 項目2='" & b & "' where 項目=1")
sqlstr=("UPDATE テーブルZ set 項目2='" & c & "' where 項目=1")
上記の要領で1つにまとめると出来ないので,どのように書けばよいのでしょうか
よろしくお願い致します

A 回答 (4件)

文字列と変数がごっちゃになってませんか?


解りやすく分けてみましょう。

sqlstr=""
sqlstr= sqlstr & "UPDATE テーブルZ "
sqlstr= sqlstr & "set 項目1='" & a & "'"
sqlstr= sqlstr & ", 項目2=" & cstr(b)
sqlstr= sqlstr & ", 項目3=" & cstr(c)
sqlstr= sqlstr & " where 項目=1"

いかがでしょうか?
    • good
    • 2
この回答へのお礼

早速のお返事有難うございました。
こうゆう記述もあるのですね勉強になりました。
ちなみに数値型変数を書き込むときは
項目=" & b & "としても
項目=" & cstr(b)& "としても同じなのでしょうか?
結合すると下記で良いのでしょうか?

"UPDATE テーブルZ "&"set 項目1='" & a & "'"& ", 項目2=" & cstr(b)& ", 項目3=" & cstr(c)& " where 項目=1"

お礼日時:2002/09/10 23:28

#3です。


SQL文は分けるとトラぶったときなどに
解析しやすいので私はいつもそうしてます。
SELECT文で列をたくさん引っぱってくるときなど
みやすくて便利ですよ。

>項目=" & b & "としても
>項目=" & cstr(b)& "としても同じなのでしょうか?
どちらでもOKだと思うのですが、
sqlstrという変数に、文字列を作っていますので、
数値型は文字列型に変換したほうが無難かと思います。
    • good
    • 1
この回答へのお礼

補足へのお返事有難うございました。
マニュアル等見ても良くわからなかったので
大変良くわかりました。
有難うございました

お礼日時:2002/09/11 07:44

まとめた場合と、分割した場合のsqlstrの設定がぜんぜん違っていませんか?


また、分割したこの文でうまくいくのでしょうか?(書き間違えているような)

sqlstr=("UPDATE テーブルZ set 項目1='" & a & "',項目2=" & b & ",項目3=" & c & " where 項目=1")

でだめですか?
    • good
    • 1
この回答へのお礼

早速のお返事有難うございました。
頂いた要領で上手く動作しました
大変助かりました

お礼日時:2002/09/10 23:17

SQL文の中に、VBの変数名を直接記述したって、データベース・エンジンには、それがVBの変数だってわかりませんので、エラーになります。


下記の単一SQL文の方では、文字列を連結して、SQL文を組み立ててるのに、上の方で、それを行ってないのはどうして?

あと、SQL文を組み立てる際、データをシングルクォートでくくる場合、データに含まれるシングルクォートは、エスケープする必要があります。
そこらへんも確認してみては。

ADOのCommandオブジェクトを使って、パラメータとして、VBの変数値を渡すという手もあります。
    • good
    • 0
この回答へのお礼

早速のお返事有難うございました。
変数がどのような動きをするのか確かめているうちに判らなくなっていました。
勉強しなおします

お礼日時:2002/09/10 23:15

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

このQ&Aを見た人はこんなQ&Aも見ています

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