Analytics

2011年2月24日 星期四

[MS Access]解決 使用String組SQL語法時遇到Datetime時遇到System.Data.OleDb.OleDbException (0x80040E07): 準則運算式的資料類型不符合。(Solve encountered System.Data.OleDb.OleDbException (0x80040E07) encountered when using Datetime String set of SQL syntax: Guidelines expression data type does not match.)


問題

使用String組SQL語法時遇到Datetime時遇到System.Data.OleDb.OleDbException (0x80040E07): 準則運算式的資料類型不符合。
String組法如下:
1
完整組出來的語法如下:
2
這樣的語法看起來是沒問題的,至少是在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內建的伺服器總管測試的時候,發現查詢條件被異動過
3
這時可以注意到在原本的日期String被替換成前後加上#號,可以得知在MS Access的資料庫哩,要用String組日期前後的符號跟MS SQL Server是不相同的
4
之後在程式裡將原本前後加上'符號改為#號,執行後就不會有此問題
5

沒有留言:

熱門文章