| 
    
     |  | ▼もとあし さん: >neptune さん、
 こんにちは。
 
 >strSNTXT = Trim("'Worksheets(""Sheet1"").txtSNInput.Text'")
 とすれば大丈夫だと思いますよ。
 でも何故シート名を付けるのでしょうか?
 neptune さんのレスのように単なる初期値みたいなものですよね?
 
 今回のケースではパラメータを使う必要も無いと思います。
 このマクロを実行する時点で、
 「Worksheets("Sheet1").txtSNInput.Text」は入力されているのでしょうから
 初めから、mySQL文にセットして抽出すればいいと思います。
 
 >ウッシさんのにはCreateParameterメソッドが使用されていません。
 >この場合、なくてもいいのなら、どんなときに必要となるのでしょうか。
 というか、CreateParameterメソッドを使った書き方でうまく抽出出来なかったので
 提示したコードにしました。
 
 下記コードはエラーにはなりませんけど、なにも抽出出来ませんでした。
 
 Dim cn    As New ADODB.Connection
 Dim cmd   As New ADODB.Command
 Dim rs    As New ADODB.Recordset
 Dim param  As New ADODB.Parameter
 Dim mySQL  As String
 Dim strSNTXT As String
 Dim strmsg  As String
 
 strSNTXT = Trim("'Worksheets(""Sheet1"").txtSNInput.Text'")
 mySQL = "SELECT * FROM tbl1 WHERE fldA=" & strSNTXT
 cn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0;" _
 & "Data Source=K:\db1.mdb"
 cn.Open
 Set cmd.ActiveConnection = cn
 
 With cmd
 .CommandText = mySQL
 .CommandType = adCmdText
 .Prepared = True
 End With
 
 Set param = cmd.CreateParameter("パラメータ", adVarChar, adParamInput, 20)
 cmd.Parameters.Append param
 strmsg = Trim("'" & Worksheets("Sheet1").txtSNInput.Text & "'")
 cmd.Parameters("パラメータ") = strmsg
 
 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
 
 どこかおかしいでしょうか?
 
 |  |