|
いつもお世話になっています。
調べたり、試したのですが、分からないので質問させてください。
ADOでAccess(97)に接続して、エクセルシート上のテキストボックスの値をもとに
パラメータークエリを実行する、という方法を行おうとしています。
ですが、SQL句へどのように記述すればいいのか、分かりません。
下記のコードは、もともとはあるサイトで、クエリにパラメータークエリの為に
MsgBoxで代用するというものでした。
自分で少し、代えてみたのですが、次のエラーがでます。
「クエリ式'fldBBB=Worksheets("Sheet1").txtSNInput.Text'の'.'、'!'、または
'()'の使い方が正しくありません。」
他にも書き方を変えてみたりしたのですが、いずれにおいてもエラーがでます。
何が悪いのか、教えてください。
よろしくお願いします。
Sub ADO_Find()
Dim cn As ADODB.Connection
Dim cmd As New ADODB.Command
Dim rs As ADODB.Recordset
Dim param As ADODB.Parameter
Dim mySQL As String
Dim strcriteria As String
Dim strback As String
strSNTXT = "Worksheets(""Sheet1"").txtSNInput.Text"
strSN = Worksheets("Sheet1").txtSNInput.Text
mySQL = "SELECT * FROM tbl1 WHERE fldA =" & strSNTXT
Set cn = New ADODB.Connection
cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _
& "Data Source=K:xxx\db1.mdb"
cn.Open
Set cmd.ActiveConnection = cn
With cmd
.CommandText = mySQL
.CommandType = adCmdText
.Prepared = True
End With
Set param = New ADODB.Parameter
Set param = cmd.CreateParameter("fldA", adVarChar, adParamInput, 20)
cmd.Parameters.Append param
strback = Trim(strSN)
cmd.Parameters("fldA") = strback
Set rs = New ADODB.Recordset
Set rs = cmd.Execute ← ここでエラーがでます。
Do Until rs.EOF
Debug.Print rs!fldA, rs!fldB, rs!fldC
rs.MoveNext
Loop
Set cmd = Nothing
rs.Close: Set rs = Nothing
cn.Close: Set cn = Nothing
End Sub
|
|