VB6とACCESSを使っているのですが、アクションクエリーでレコードを追加する際に文の中に変数を使いたいのですが、うまくできません。
ユーザID = "Insert Into skengen(ユーザID)Values('変数')
' アクション クエリーを実行
cn.Execute ユーザID, , adCmdText
こんな感じで値に文字列ではなく、String型の変数を代入してクエリーを実行したいのですがこれでは普通に変数に格納された値ではなく"変数"という文字列がそのままレコードに追加されてしまいます。そもそもSQL文の値に変数を利用する事はできるのでしょうか?色々サイトを見てまわりましたが、答えがみつかりませんので、ここで質問させて頂きました。もし方法を知っている方がおられましたら、ご教授願います。
SQL = ""
SQL = SQL & "PARAMETERS UserID TEXT(20);"
SQL = SQL & "INSERT INTO SKENGEN ([ユーザID]) VALUES (UserID);"
のように、Jet SQLのPARAMETERSステートメントを使って変数を宣言し、
このSQLを、ADODB.Commandオブジェクトなどから実行すればOKです。
(変数値の指定は、Parameterオブジェクト経由で行えます)
あるいは、
SQL = "INSERT INTO SKENGEN ([ユーザID]) VALUES ('"
SQL = SQL & strUserID & "')"
のように、変数を文字列として連結してやる事で、
『INSERT INTO SKENGEN ([ユーザID]) VALUES ('TAKASHI')』
のようなSQLを作成するという方法もあります。
# ただし後者の方法では、変数(strUserID)中に『"』や『'』や『|』などの
# 特殊文字が含まれる場合、それらの特殊文字をエスケープする必要があります。
ツイート | ![]() |