問題
使用String組SQL語法時遇到Datetime時遇到System.Data.OleDb.OleDbException (0x80040E07): 準則運算式的資料類型不符合。
String組法如下:
完整組出來的語法如下:
這樣的語法看起來是沒問題的,至少是在SQL Server上是這樣的,但是這總方式遇到MS Access的時候,就會發生如下的錯誤:
System.Data.OleDb.OleDbException (0x80040E07): 準則運算式的資料類型不符合。
於 System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult hr)
於 System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)
於 System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)
於 System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)
於 System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)
於 System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior)
於 System.Data.OleDb.OleDbCommand.ExecuteReader()
……
解決方法
當我使用VISUAL STUDIO內建的伺服器總管測試的時候,發現查詢條件被異動過
這時可以注意到在原本的日期String被替換成前後加上#號,可以得知在MS Access的資料庫哩,要用String組日期前後的符號跟MS SQL Server是不相同的
之後在程式裡將原本前後加上'符號改為#號,執行後就不會有此問題
沒有留言:
張貼留言