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

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本: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 - 最後檢閱時間:12/05/2015 08:55:35 - 修訂: 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

  • kbnosurvey kbarchive kbmt kbbug kbdatabase kbdriver kbjet KB189220 KbMtzh
意見反應