こんにちは。
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の場合、
%などををエスケープする場合は、どのようにしたらよいでしょうか?
宜しくお願い申し上げます。
解決しました。
MDBでは、上記のようなエスケープではなく、[]で囲むということが分かりました。
(例えば%→[%])
ツイート | ![]() |