更新查詢中的 ACC: 「 定義太多欄位 」 錯誤訊息

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

按一下這裡查看此文章的英文版本:154070
本文已封存。本文係以「現狀」提供且不會再更新。
中級使用者: 需要基本巨集]、 [程式碼撰寫,] 以及 [交互操作性技巧。
徵狀
當您執行更新查詢,以選取的欄位超過 127 時,可能會收到錯誤] 訊息 「 太定義的許多欄位"不過,此相同的查詢將會正確執行當您選取 127 的欄位或更少。
發生的原因
Microsoft Jet 資料庫引擎的一個內部的上限為 255 個欄位,每個查詢。Microsoft Jet 資料庫引擎逐一查看更新查詢中的記錄,它建立了原始值的欄位並更新的值的欄位。選取狀態超過 127 的欄位時到達 255 欄位限制的查詢。

請考慮下列 SQL 的更新查詢:
   UPDATE Table SET A=B, C=D				

內部查詢如下所示:
   SELECT A,B,C,D   FROM Table				
解決方案
細分成多個與 127 或較少的欄位,每個查詢的更新查詢更新查詢。

-或者-

使用 Visual Basic 中的資料錄集的應用程式更新的欄位。

如需有關更新資料錄集的詳細資訊,搜尋說明索引的 Update 方法。
其他相關資訊

重製行為的步驟

這些步驟假設您已熟悉使用 Visual Basic 應用程式以及建立 Microsoft Access 應用程式使用程式設計與 Microsoft Access 所提供的工具。如需有關 Visual Basic 應用程式,請參閱您的建置應用程式與 Microsoft 存取] 手冊版本。

注意: 應用程式的 Visual Basic 稱為存取基本在 Microsoft Access 版本 1.x 和 2.0 版。如需有關存取基本的詳細資訊,請參閱 」 簡介來發展"手冊,在 Microsoft Access 版本 1.x 或 < 建置應用程式"手冊,Microsoft Access 版本 2.0 中

下列步驟會建立三個函式。第一個函式會建立具有 128 欄位的資料表。第二個函式在資料表中新增一筆記錄,並該記錄到單字"TEXT] 將欄位的值。第三個函式會建立更新查詢中欄位的值會更新至字母"T"。從 [偵錯] 視窗 (或 Microsoft Access 2.0 中的 [即時運算] 視窗) 執行三個函式,並觀察錯誤訊息。

注意: 對於 Microsoft Access 版本 1.x 手動建立好一份資料表所有與文字資料類型的 255 個欄位。下列程式碼的運作只針對 Microsoft Access 版本 2.0 及更新版本。
  1. 建立下列的程式碼來建立新的資料表,將記錄加入該資料表,並建立更新查詢:
          ' ****************************************************************      ' Declarations section of the module      ' ****************************************************************      Option Compare Database      Option Explicit      ' ****************************************************************      ' The Fill_Table() function creates a table in the current database      ' named Field Test with 128 fields, each of which has a Text data      ' type and a size of five characters.      ' ****************************************************************						
          Function Fill_Table ()         Dim mydb As Database         Dim tbl As TableDef         Dim fld As Field         Dim i As Integer         Set mydb = CurrentDb()         Set tbl = mydb.CreateTableDef("Field Test")         For i = 0 To 127           Set fld = tbl.CreateField("Field" & CStr(i + 1))           fld.type = DB_TEXT           fld.size = 5           tbl.fields.Append fld         Next i         mydb.tabledefs.Append tbl      End Function      ' ****************************************************************      ' The Fill_Data() function adds one record to the table with      ' all fields equal to "Text."      ' ****************************************************************      Function Fill_Data()         Dim mydb As DATABASE         Dim fld As Field         Dim rs As Recordset         Dim i as Integer         Set mydb = CurrentDb()         Set rs = mydb.OpenRecordset("Field Test")         rs.AddNew         For i = 0 to rs.Fields.Count - 1            rs.Fields(i).Value = "Text"         Next i         rs.UPDATE         rs.Close      End Function      ' ****************************************************************      ' The Build_SQL() function creates an update query in the current      ' database named Update Test which will update the 128 fields in      ' the Field Test table to the letter 'T.'      ' ****************************************************************      Function Build_SQL()         Dim mydb As DATABASE         Dim qdf As QueryDef         Dim x As String         Dim i As Integer         x = "Update [Field Test] SET "         For i = 0 To 127            x = x + "[Field Test].Field" & CStr(i + 1) & " = 'T', "         Next         x = Left(x, Len(x) - 2)         Set mydb = CurrentDb()         Set qdf = mydb.CreateQueryDef("UpdateTest", x)      End Function						
  2. 若要執行每個函式,請偵錯] 視窗 (或在 2.0 版中的 [即時運算] 視窗) 中輸入下列各行。在每一行之後按 ENTER。
          ? Fill_Table()      ? Fill_Data()      ? Build_SQL()						
  3. 關閉偵錯視窗。
  4. 執行更新測試查詢。
参考
如需有關"太定義的許多欄位 」 錯誤訊息,請參閱 「 Microsoft 知識庫 」 中下列文:

128221ACC:"太多定義欄位] 儲存資料表的錯誤訊息

警告:本文為自動翻譯

內容

文章識別碼:154070 - 最後檢閱時間:10/01/2013 02:44:51 - 修訂: 2.1

Microsoft Access 1.0 Standard Edition, Microsoft Access 1.1 Standard Edition, Microsoft Access 2.0 Standard Edition, Microsoft Access 95 Standard Edition, Microsoft Access 97 Standard Edition

  • kbnosurvey kbarchive kbmt kberrmsg kbprb KB154070 KbMtzh
意見反應