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も見ています
-
これまでで一番「情けなかったとき」はいつですか?
これまでの人生で一番「情けない」と感じていたときはいつですか? そこからどう変化していきましたか?
-
ことしの初夢、何だった?
2025年になりましたね。1年の吉凶を占う風習といわれている初夢。ことし初めて見た夢、覚えていますか?
-
コンビニでおにぎりを買うときのスタメンはどの具?
コンビニでおにぎりを買うとき、何の具材を選ぶことが多いですか?
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
「これいらなくない?」という慣習、教えてください
現代になって省略されてきたとはいえ、必要性のない慣習や風習、ありませんか?
-
VBとアクセスでSQL文に変数を使いたいのですが
Visual Basic(VBA)
-
String"から型'Double'への変換は無効です。 とエラーが出ます。
Visual Basic(VBA)
-
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
-
4
VB.NETでコンボボックスの1行目を空白にしたい
Visual Basic(VBA)
-
5
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
6
VB.NET2003 テキストボックスに半角英数字以外入力させない
Visual Basic(VBA)
-
7
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
8
VB.NETでのイベントの途中終了
Visual Basic(VBA)
-
9
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
10
Designer.vbは直接コードをいじってはだめ?
Visual Basic(VBA)
-
11
データベースのデータをTextBoxに入力された値で検索しDataGridViewに表示する方法
Visual Basic(VBA)
-
12
textboxユーザーコントロールのコピー&ペースト制御
Visual Basic(VBA)
-
13
Statement ignored というエラー
Oracle
-
14
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
15
VB2005 TextBoxに何も入力しない場合のエラー
Visual Basic(VBA)
-
16
Handlesについて
Visual Basic(VBA)
-
17
テキストボックスの中身をリセット(クリア)したい
Visual Basic(VBA)
-
18
小数点を含む数値かどうか判断の判断方法
Visual Basic(VBA)
-
19
複数のtextboxの処理を一括で行えませんか?
Visual Basic(VBA)
-
20
Refreshメソッドの使い方
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
SUBSTRING 関数に渡した長さの...
-
Access テキスト型に対する指定...
-
空白をそのままインポートする...
-
エクセルグラフの凡例スペース
-
Accessレポートで特定条件で改...
-
BIOSでAHCIに設定したいが、項...
-
ORACLE SQL 文末 文字列 削除の...
-
セルの右クリックで出る項目を...
-
エクセルマクロにて最終行まで...
-
SQLでの並べ替えを数字の順番に...
-
Accessの表形式のフォームについて
-
Excelで空白以外の値がある列の...
-
ある講演を聴いての感想レポー...
-
mac スクショ
-
他テーブルで一致する列から名...
-
Accessレポート上でCountif。
-
Accessで数値型にNULLをInsert...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
エクセルVBAで5行目からオート...
-
Oracle 2つのDate型の値の差を...
-
セルの右クリックで出る項目を...
-
Access テキスト型に対する指定...
-
エクセルグラフの凡例スペース
-
VBAで複数の数式セルを最終行ま...
-
SUBSTRING 関数に渡した長さの...
-
必須入力項目と入力必須項目
-
ORACLEでLONG項目からCHAR項目...
-
Accessレポートで特定条件で改...
-
APN設定について教えていただけ...
-
Accessで数値型にNULLをInsert...
-
BIOSでAHCIに設定したいが、項...
-
Access又はExcelで256項目を超...
-
2行目を表示できますか?
-
空白をそのままインポートする...
-
access2000:フォームで入力し...
-
datファイルからaccessにインポ...
-
少数部の桁数の求め方
おすすめ情報