
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で質問しましょう!
似たような質問が見つかりました
- Oracle SQL update方法 2 2022/06/22 14:07
- SQL Server [SQLServer] テーブル名からカラム名を取得する 1 2022/08/23 21:20
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Access(アクセス) access フォーム 大分類、小分類 1 2022/08/11 18:03
- JavaScript html javascriptにてWeb SQLを操作したい。 2 2022/12/16 17:43
- Access(アクセス) アクセス テーブルの空白を変数に置換するボタンが作りたい 4 2022/07/08 11:19
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
このQ&Aを見た人はこんなQ&Aも見ています
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
5
textboxユーザーコントロールのコピー&ペースト制御
Visual Basic(VBA)
-
6
Statement ignored というエラー
Oracle
-
7
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
8
VB.NET DataReaderが開かれている
Visual Basic(VBA)
-
9
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
10
vb.netの型変換について
Visual Basic(VBA)
-
11
クリックイベントなのに、2回クリックしないとフォー
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルグラフの凡例スペース
-
エクセルVBAで5行目からオート...
-
追加クエリ
-
BIOSでAHCIに設定したいが、項...
-
access2000:フォームで入力し...
-
Access テキスト型に対する指定...
-
VBAで複数の数式セルを最終行ま...
-
ビューでのデータエラー 「0で...
-
Oracle 2つのDate型の値の差を...
-
エクセルVBAでフォームのListbo...
-
テキストデータをエクセルにコ...
-
ORACLEでLONG項目からCHAR項目...
-
セルの右クリックで出る項目を...
-
2行目を表示できますか?
-
SQLServerのGROUP BYについて
-
必須入力項目と入力必須項目
-
ORACLE SQL 文末 文字列 削除の...
-
エクセルマクロにて最終行まで...
-
yes/no型の更新ができない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
エクセルグラフの凡例スペース
-
Access テキスト型に対する指定...
-
セルの右クリックで出る項目を...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
BIOSでAHCIに設定したいが、項...
-
Accessレポートで特定条件で改...
-
他テーブルで一致する列から名...
-
Accessで数値型にNULLをInsert...
-
ORACLEでLONG項目からCHAR項目...
-
datファイルからaccessにインポ...
-
access2000:フォームで入力し...
-
指定した項目の列削除
-
APN設定について教えていただけ...
-
VBAで複数の数式セルを最終行ま...
-
条件に一致した列の非表示の仕...
-
複数のレコードを1つのレコード...
おすすめ情報