Freigeben über


Fehler "Zu viele Felder definiert" beim Speichern einer Tabelle in Access

Moderat: Erfordert grundlegende Makro-, Programmier- und Interoperabilitätskenntnisse.

Dieser Artikel gilt nur für eine Microsoft Access-Datenbank (.mdb).

Symptome

Wenn Sie eine Tabelle speichern, nachdem Sie ein neues Feld hinzugefügt oder die Eigenschaften eines vorhandenen Felds geändert haben, wird die folgende Fehlermeldung angezeigt:

Zu viele Felder definiert.

Auf diese Meldung folgt Folgendes:

Beim Speichern sind Fehler aufgetreten. Datentypen wurden nicht geändert.

Sie erhalten diese Nachrichten, obwohl in der Tabelle weniger als 255 Felder definiert sind.

HINWEIS Sie erhalten diese Meldung auch, wenn Sie Felder in einem Bericht hinzufügen oder ändern, der auf einer Tabelle basiert, die zu viele Felder enthält.

Ursache

Die interne Spaltenanzahl, die Microsoft Access verwendet, um die Anzahl der Felder in der Tabelle nachzuverfolgen, hat 255 erreicht, obwohl die Tabelle möglicherweise weniger als 255 Felder enthält. Dies kann der Fall sein, weil Access die anzahl der internen Spalten beim Löschen eines Felds nicht ändert. Access erstellt auch ein neues Feld (erhöhen die anzahl der internen Spalten um 1) für jedes Feld, dessen Eigenschaften Sie ändern.

Lösung

Führen Sie eine der folgenden Aktionen aus, um die interne Spaltenanzahl für gelöschte Felder oder für Felder frei zu geben, deren Eigenschaften Sie ändern:

  • Komprimen der Datenbank. Zeigen Sie hierzu im Menü Extras auf Datenbankhilfsprogramme, und klicken Sie dann auf Datenbank komprimieren und reparieren.

  • Erstellen Sie eine neue Kopie der Tabelle. Führen Sie hierfür die folgenden Schritte aus:

    1. Notieren Sie sich alle Beziehungen mit der Tabelle.
    2. Wählen Sie die Tabelle aus.
    3. Klicken Sie im Menü Datei auf Speichern unter.
    4. Geben Sie im Feld Tabelle 'Tabellenname' speichern in einen neuen Namen ein, und klicken Sie dann auf OK.
    5. Wählen Sie dieselbe Tabelle aus, die Sie in Schritt 2 ausgewählt haben, und drücken Sie dann ENTF.
    6. Benennen Sie die Tabelle, die Sie in Schritt 3 gespeichert haben, in den ursprünglichen Tabellennamen um.
    7. Richten Sie alle Beziehungen mit der neuen Tabelle erneut ein.

Weitere Informationen

In Access können Sie bis zu 255 Felder in einer Tabelle definieren. Wenn Sie 255 Felder erstellen und dann 10 löschen, gibt Access die Felder nicht aus der internen Spaltenanzahl frei. Außerdem erstellt Access für jedes Feld, dessen Eigenschaften Sie ändern, ein neues Feld und gibt das ursprüngliche Feld nicht aus der internen Spaltenanzahl frei.

Schritte zum Reproduzieren des Verhaltens

Hinweis

Der Beispielcode in diesem Artikel verwendet Microsoft Data Access Objects. Damit dieser Code ordnungsgemäß ausgeführt werden kann, müssen Sie auf die Microsoft DAO 3.6-Objektbibliothek verweisen. Klicken Sie dazu im Visual Basic-Editor im Menü Extras auf Verweise, und stellen Sie sicher, dass das Kontrollkästchen Microsoft DAO 3.6-Objektbibliothek aktiviert ist.

  1. Erstellen Sie den folgenden Visual Basic for Applications Code, um eine neue Tabelle mit 255 Feldern zu erstellen:
' ****************************************************************
' 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 255 fields, each of which has a Text data
    ' type and a size of one character.
    ' ****************************************************************
    
    Function Fill_Table()
    
    Dim mydb As DAO.Database
       Dim tbl As DAO.TableDef
       Dim fld As DAO.Field
       Dim i As Integer
    
    Set mydb = CurrentDb()
       Set tbl = mydb.CreateTableDef("Field Test")
          For i = 0 To 254
             Set fld = tbl.CreateField("Field" & CStr(i + 1))
             fld.Type = dbText
             fld.Size = 1
             tbl.Fields.Append fld
          Next i
          mydb.TableDefs.Append tbl
    
    End Function
  1. Geben Sie im Direktfenster die folgende Zeile ein, um die Funktion auszuführen und die Tabelle zu erstellen:

    Fill_Table
    
  2. Zeigen Sie die Tabelle Feldtest in der Entwurfsansicht an, und löschen Sie dann das letzte Feld, sodass nur 254 Felder in der Tabelle definiert sind.

  3. Fügen Sie das Feld erneut hinzu, und versuchen Sie, die Tabelle zu speichern. Beachten Sie, dass Sie die folgenden Fehlermeldungen erhalten:

    Too many fields defined.
    
    Errors were encountered during the save operation. Fields were not added. Properties were not updated.
    

References

Wenn Sie weitere Informationen zu Datenbankspezifikationen benötigen, klicken Sie im Menü Hilfe auf Microsoft Access-Hilfe, geben Sie Zugriffsspezifikationen im Office-Assistenten oder im Antwort-Assistenten ein, und klicken Sie dann auf Suchen, um die zurückgegebenen Themen anzuzeigen.