Felet "För många fält definierade" när du sparar en tabell i Access

Anteckning

Office 365 ProPlus byter namn till Microsoft 365-appar för företag. Mer information om den här ändringen finns i det här blogginlägget.

Måttlig: Kräver grundläggande makron, kodning och kompatibilitetsfärdigheter.

Den här artikeln gäller endast för Microsoft Access-databaser (.mdb).

Symptom

När du sparar en tabell efter att du har lagt till ett nytt fält eller ändrat egenskaperna för ett befintligt fält visas följande felmeddelande:

För många fält har definierats.

Det här meddelandet följs av:

Det uppstod fel under sparningen. Datatyper ändrades inte.

Du får dessa meddelanden även om du har 255 eller färre fält definierade i tabellen.

OBS! Det här meddelandet visas också om du lägger till eller ändrar fält i en rapport som baseras på en tabell som har för många fält.

Orsak

Det interna kolumnantalet som Microsoft Access använder för att spåra antalet fält i tabellen har nått 255, även om du kanske har färre än 255 fält i tabellen. Det kan hända eftersom Access inte ändrar det interna kolumnantalet när du tar bort ett fält. Access skapar också ett nytt fält (öka antalet interna kolumner med 1) för varje fält vars egenskaper du ändrar.

Lösning

Om du vill frigöra antalet interna kolumner för borttagna fält eller för fält vars egenskaper du ändrar gör du något av följande:

  • Komprimera databasen. Det gör du genom att peka på Databasverktyg på menyn Verktyg och sedan klicka på Komprimera och reparera databas.

  • Skapa en ny kopia av tabellen. Gör så här:

    1. Anteckna relationerna med tabellen.
    2. Markera tabellen.
    3. Klicka på Spara som på Arkiv-menyn.
    4. Skriv ett nytt namn i rutan Spara tabellnamn ' Till och klicka sedan på OK.
    5. Markera samma tabell som du valde i steg 2 och tryck sedan på DELETE.
    6. Byt namn på tabellen som du sparade i steg 3 till det ursprungliga tabellnamnet.
    7. Återställa alla relationer till den nya tabellen.

Mer information

I Access kan du definiera upp till 255 fält i en tabell. Om du skapar 255 fält och sedan tar bort 10, släpper Access inte fälten från det interna kolumnantalet. För alla fält vars egenskaper du ändrar skapas också ett nytt fält i Access, och det ursprungliga fältet från det interna kolumnantalet frigörs inte.

Steg för att återskapa beteendet

Anteckning

I exempelkoden i den här artikeln används Microsoft Data Access-objekt. För att den här koden ska köras korrekt måste du referera till Microsoft DAO 3.6-objektbiblioteket. Det gör du genom att klicka på Referenser på menyn Verktyg i Visual Basic Editor och kontrollera att kryssrutan Microsoft DAO 3.6-objektbibliotek är markerad.

  1. Skapa följande kod Visual Basic for Applications skapa en ny tabell med 255 fält:
' ****************************************************************
' 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. Skriv följande rad i direktfönstret för att köra funktionen och skapa tabellen:

    Fill_Table
    
  2. Visa tabellen Fälttest i designvyn och ta sedan bort det sista fältet så att bara 254 fält har definierats i tabellen.

  3. Lägg till fältet igen och försök spara tabellen. Observera att du får följande felmeddelanden:

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

Referenser

Om du vill ha mer information om databasspecifikationer klickar du på Microsoft Access-hjälpen på Hjälp-menyn, skriver Access-specifikationer i Office-assistenten eller Svarsguiden och klickar sedan på Sök för att visa de avsnitt som returneras.