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

文章翻譯 文章翻譯
文章編號: 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 - 上次校閱: 2013年10月1日 - 版次: 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
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:154070
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