こんにちわ、お世話になります。
VB6ですが、パラメータークエリの条件部を簡単に抜き出します。
strSQL = strSQL & "name = ? "
Set objPrm = adoCommand.CreateParameter("name", adBSTR, _
adParamInput, , name.Text)
これをLIKE演算子を使用して「あいまい検索」をしたいのですが、どうもうまくいきません。どなたかお力をお貸し下さいませ。よろしくお願いします。
”どうもうまくいきません”とは、どのようにうまくいきませんか?
説明不足で申し訳ありません。詳細を。
Dim mrecTab As ADODB.Recordset
Dim objPrm As ADODB.Parameter
Dim strSQL As String
Dim lngCountRecord As Long
'参照
Set adoCommand = New ADODB.Command
adoCommand.ActiveConnection = adoConnect
'SQL
strSQL = ""
strSQL = strSQL & "select "
strSQL = strSQL & "name "
strSQL = strSQL & "from "
strSQL = strSQL & "mst "
strSQL = strSQL & "where "
strSQL = strSQL & "name LIKE ? "
'パラメータクエリ
Set objPrm = adoCommand.CreateParameter("name", adBSTR, _
adParamInput, , imtname.Text & "%")
adoCommand.Parameters.Append objPrm
'SQL実行
adoCommand.CommandType = adCmdText
adoCommand.CommandText = strSQL
Set mrecTab = adoCommand.Execute()
'解放
Set adoCommand = Nothing
Set adoCommand.ActiveConnection = Nothing
LIKEではなく=で条件を指定すると通るので
問題はLIKEと%の使い方だと思うのですが…どうでしょうか?
よろしくおねがいします。
Set objPrm = adoCommand.CreateParameter("name", adBSTR, adParamInput, , imtname.Text & "%")
が
Set objPrm = adoCommand.CreateParameter("name", adVarChar, adParamInput, 100, imtname.Text & "%")
では?
うなまな様、ご回答ありがとうございます。
DataTypeEnumの型は可能性があるものは全て試してみましたが、出来ませんでした。
サイズは省略可能なので無くても良いとは思うんですが、一応付けてみます。
やはり、%の置き方に問題があるのでしょうか…
SQLサーバー2000にて
Set objPrm = adoCommand.CreateParameter("name", adVarChar, adParamInput, 100, "Test%")
みたいな設定で動作確認取れました。
結局どううまくいかないのか書かれていません。
うなまなさんが聞かれたのはエラーが出るならエラーメッセージを、
データが表示できないなら、実際のデータとLIKEに指定している
文字も具体的に示すなどしないと分からないからです。
Access とかだと "%" じゃなくて "*" とかだった気がしますが、
データベースの種類も書かれていませんよね?
度々の説明不足、本当に申し訳ありません。
環境は、VB6(SP6)、PostgreSQL8.1です。
Set objPrm = New ADODB.Parameter
Set objPrm = adoCommand.CreateParameter("nm", adBSTR, adParamInput)
adoCommand.Parameters.Append objPrm
adoCommand.Parameters("nm") = "'" & imtname.Text & "%'"
にしたところ、出来ました。
うなまな様、まるるう様、ご回答ご指摘ありがとうございました。
ツイート | ![]() |