MDBのあいまい検索で、ワイルドカードをエスケープするには?

解決


エドガワ  2009-03-25 23:40:03  No: 145830

こんにちは。
Microsoft.Jet.OLEDB.4.0を使用して、Access2003のMDBファイルの内容を検索しようと思っています。
しかし、検索文字をLIKEであいまい検索しようとした場合、%などをエスケープしたいのですが、
以下のようにすると、以下参考ソースのDataTable(dtTable)にデータをFillする部分で
「System.Data.OleDb.OleDbException: IErrorInfo.GetDescription が E_FAIL(0x80004005) で 失敗しました。」
という例外が発生してしまいます。

objDbConnection = New OleDb.OleDbConnection
objDbConnection.ConnectionString = _
    "ProviderMicrosoft.Jet.OLEDB.4.0;" & _
    "Data Source=" & (MDBファイル名) & ";"
objDbConnection.Open()
sql = "SELECT * FROM TABLE_1 WHERE FIELD_1 LIKE '%100\%% ESCAPE '\'"
objDbCommand = New OleDb.OleDbCommand(sql, objDbConnection)
oleDa = New OleDb.OleDbDataAdapter(objDbCommand)
oleDa.Fill(dtTable)    '※ここでエラーとなる

SQL Serverの時はこのようなエラーが出なかったと思いますが、MDBの場合、
%などををエスケープする場合は、どのようにしたらよいでしょうか?
宜しくお願い申し上げます。


エドガワ  2009-03-26 01:48:53  No: 145831

解決しました。
MDBでは、上記のようなエスケープではなく、[]で囲むということが分かりました。
(例えば%→[%])


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加