
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)
-
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
-
4
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
5
チェックボックスを操作できないようにしたいです VB.NET
Visual Basic(VBA)
-
6
asp.NET初心者です。「 ’Context’は’○○○’のメンバで
Microsoft ASP
-
7
オブジェクト参照がオブジェクト インスタンスに設定されていません というエラーについて
Microsoft ASP
-
8
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
ワードで4段組みで文章を書い...
-
Oracle 2つのDate型の値の差を...
-
Access2000 レポートの並び替...
-
ACCESSからORACLEへの移行について
-
【マクロ】列を折りたたみ非表...
-
必須入力項目と入力必須項目
-
Access テキスト型に対する指定...
-
ORACLE SQL 文末 文字列 削除の...
-
SQLのSELECT文で*を使わない理由
-
SUBSTRING 関数に渡した長さの...
-
エクセルの右クリックについて
-
SQLServerのGROUP BYについて
-
エクセルグラフの凡例スペース
-
少数部の桁数の求め方
-
アリエクで買った商品が破損し...
-
セルの右クリックで出る項目を...
-
VBAで複数の数式セルを最終行ま...
-
datファイルからaccessにインポ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
【マクロ】列を折りたたみ非表...
-
エクセルVBAで5行目からオート...
-
Access テキスト型に対する指定...
-
エクセルグラフの凡例スペース
-
Oracle 2つのDate型の値の差を...
-
アリエクで買った商品が破損し...
-
セルの右クリックで出る項目を...
-
access2000:フォームで入力し...
-
Accessレポートで特定条件で改...
-
ORACLEでLONG項目からCHAR項目...
-
必須入力項目と入力必須項目
-
Accessで数値型にNULLをInsert...
-
SELECT文でLEFT関数を使うと未...
-
指定した項目の列削除
-
datファイルからaccessにインポ...
-
SUBSTRING 関数に渡した長さの...
-
VBAで複数の数式セルを最終行ま...
-
Access又はExcelで256項目を超...
-
BIOSでAHCIに設定したいが、項...
おすすめ情報