注意: 「 語法錯誤在 INSERT INTO...」 上 ADO Recordset.Update

文章翻譯 文章翻譯
文章編號: 189220 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

徵狀

當您呼叫 AddNew] 方法,並再呼叫 Update 方法的一個資料錄集,便會傳回下列錯誤:
Microsoft OLE DB 提供者的 ODBC 驅動程式時發生錯誤 '80040e21'
[Microsoft][ODBC Microsoft Access 97 驅動程式]語法錯誤在 INSERT INTO 陳述式。
使用 Microsoft Access ODBC 驅動程式 version4.00.4202.00 或更新版本,錯誤訊息:
執行階段錯誤 '-2147467259(80004005) ':
[Microsoft][Microsoft Access ODBC 驅動程式]在 INSERT INTO 陳述式的語法錯誤。

發生的原因

如果下列各項成立,便會發生這個錯誤:
  • [CursorType 是 adOpenForwardOnly (0)。
  • [CursorLocation 是 adUseServer。
  • 正在更新的欄位有欄位名稱中的空間。
  • 您正在使用 Microsoft Access ODBC 驅動程式。
伺服器端]、 [僅限正向資料指標上呼叫 AddNew] 和 [更新的方法是無效的作業。藉由產生 INSERT 陳述式執行的作業,這個程式碼瑕疵補償 ActiveX 資料物件 (ADO)。 當 ADO 會產生 INSERT 陳述式時,它不會不分隔欄位名稱。因此,包含空格的欄位名稱會產生語法錯誤。

比方說有效的 INSERT 陳述式會顯得,如下所示:
   INSERT INTO Table ([field with space]) Values(value)
				
ADO 會產生下列程式碼:
   INSERT INTO Table (field with space) Values(value)
				

解決方案

以下是幾個可能的解決方法:
  • 不要使用您資料庫中的欄位名稱中的空格。
  • 使用 adUseClient (3) 的 CursorLocation。
  • 請勿使用 adOpenForwardOnly (0) 例如 adOpenKeyset (1)、 adOpenDynamic (2) 或 adOpenStatic (3) 的 CursorType。
  • 產生您自己 INSERT 陳述式的使用而非使用 AddNew] 和 [更新方法的欄位名稱的分隔符號來執行的作業。
  • 使用 ODBC 與 Microsoft Access ODBC 驅動程式 3.51 或 4.0 而非 Microsoft OLE DB 提供者的 Jet 版本 Microsoft OLE DB 提供者。

狀況說明

Microsoft 已確認這是在本篇文章開頭所列的 Microsoft 產品中有錯誤。

屬性

文章編號: 189220 - 上次校閱: 2005年3月2日 - 版次: 2.2
這篇文章中的資訊適用於:
  • Microsoft Data Access Components 1.5
  • Microsoft Data Access Components 2.0
  • Microsoft Data Access Components 2.1 Service Pack 2
  • Microsoft Data Access Components 2.5
  • Microsoft Data Access Components 2.6
  • Microsoft Data Access Components 2.7
  • Microsoft Open Database Connectivity Driver for Access 3.5
  • Microsoft Open Database Connectivity Driver for Access 4.0
關鍵字:?
kbmt kbbug kbdatabase kbdriver kbjet KB189220 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:189220
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com