|
▼もとあし さん:
>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
どこかおかしいでしょうか?
|
|