| 
    
     |  | いつもお世話になっています。 調べたり、試したのですが、分からないので質問させてください。
 
 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
 
 
 |  |