
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つにまとめると出来ないので,どのように書けばよいのでしょうか
よろしくお願い致します
No.3ベストアンサー
- 回答日時:
文字列と変数がごっちゃになってませんか?
解りやすく分けてみましょう。
sqlstr=""
sqlstr= sqlstr & "UPDATE テーブルZ "
sqlstr= sqlstr & "set 項目1='" & a & "'"
sqlstr= sqlstr & ", 項目2=" & cstr(b)
sqlstr= sqlstr & ", 項目3=" & cstr(c)
sqlstr= sqlstr & " where 項目=1"
いかがでしょうか?
早速のお返事有難うございました。
こうゆう記述もあるのですね勉強になりました。
ちなみに数値型変数を書き込むときは
項目=" & b & "としても
項目=" & cstr(b)& "としても同じなのでしょうか?
結合すると下記で良いのでしょうか?
"UPDATE テーブルZ "&"set 項目1='" & a & "'"& ", 項目2=" & cstr(b)& ", 項目3=" & cstr(c)& " where 項目=1"
No.4
- 回答日時:
#3です。
SQL文は分けるとトラぶったときなどに
解析しやすいので私はいつもそうしてます。
SELECT文で列をたくさん引っぱってくるときなど
みやすくて便利ですよ。
>項目=" & b & "としても
>項目=" & cstr(b)& "としても同じなのでしょうか?
どちらでもOKだと思うのですが、
sqlstrという変数に、文字列を作っていますので、
数値型は文字列型に変換したほうが無難かと思います。
No.1
- 回答日時:
SQL文の中に、VBの変数名を直接記述したって、データベース・エンジンには、それがVBの変数だってわかりませんので、エラーになります。
下記の単一SQL文の方では、文字列を連結して、SQL文を組み立ててるのに、上の方で、それを行ってないのはどうして?
あと、SQL文を組み立てる際、データをシングルクォートでくくる場合、データに含まれるシングルクォートは、エスケープする必要があります。
そこらへんも確認してみては。
ADOのCommandオブジェクトを使って、パラメータとして、VBの変数値を渡すという手もあります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
-
4
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
5
Hideについて(.NET)
Visual Basic(VBA)
-
6
VBでグローバル変数を宣言するには
Visual Basic(VBA)
-
7
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
エクセルグラフの凡例スペース
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
Accessで数値型にNULLをInsert...
-
Access又はExcelで256項目を超...
-
ワードで4段組みで文章を書い...
-
SQLでの変数の扱いについて
-
datファイルからaccessにインポ...
-
SUBSTRING 関数に渡した長さの...
-
access2000:フォームで入力し...
-
複数のレコードを1つのレコード...
-
必須入力項目と入力必須項目
-
空白をそのままインポートする...
-
VBAで複数の数式セルを最終行ま...
-
【至急】Accessのフィールドの...
-
【マクロ】列を折りたたみ非表...
-
SELECT文でLEFT関数を使うと未...
-
Accessレポートで特定条件で改...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】列を折りたたみ非表...
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
Access テキスト型に対する指定...
-
ワードで4段組みで文章を書い...
-
エクセルグラフの凡例スペース
-
access2000:フォームで入力し...
-
ORACLEでLONG項目からCHAR項目...
-
アリエクで買った商品が破損し...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
他テーブルで一致する列から名...
-
空白をそのままインポートする...
-
セルの右クリックで出る項目を...
-
VBAで複数の数式セルを最終行ま...
-
複数のレコードを1つのレコード...
-
SQL*Loaderでのゼロ埋め
-
指定した項目の列削除
-
Accessレポートで特定条件で改...
おすすめ情報