Error "Demasiados campos definidos" al guardar una tabla en Access

Nota

Office 365 ProPlus pasa a llamarse Microsoft 365 Apps para empresas. Para obtener más información sobre este cambio, lea esta publicación de blog.

Moderado: requiere conocimientos básicos de macro, codificación e interoperabilidad.

Este artículo solo se aplica a una base de datos de Microsoft Access (.mdb).

Síntomas

Al guardar una tabla después de agregar un nuevo campo o cambiar las propiedades de un campo existente, recibirá el siguiente mensaje de error:

Demasiados campos definidos.

Este mensaje va seguido de:

Se encontraron errores durante el guardado. No se cambiaron los tipos de datos.

Estos mensajes se reciben aunque tenga 255 o menos campos definidos en la tabla.

NOTA También recibirá este mensaje si agrega o modifica campos en un informe basado en una tabla que tiene demasiados campos.

Causa

El recuento de columnas internas que Usa Microsoft Access para realizar un seguimiento del número de campos de la tabla ha alcanzado los 255, aunque es posible que tenga menos de 255 campos en la tabla. Esto puede ocurrir porque Access no cambia el recuento de columnas internas al eliminar un campo. Access también crea un nuevo campo (aumentando el recuento de columnas internas en 1) para cada campo cuyas propiedades modifique.

Solución

Para liberar el recuento de columnas internas para campos eliminados o para campos cuyas propiedades modifique, realice una de las siguientes acciones:

  • Compactar la base de datos. Para ello, elija Utilidades de base de datos en el menú Herramientas y, a continuación, haga clic en Compactar y reparar base de datos.

  • Cree una nueva copia de la tabla. Para hacerlo, siga estos pasos:

    1. Anote las relaciones con la tabla.
    2. Seleccione la tabla.
    3. En el menú Archivo, haga clic en Guardar como.
    4. En el cuadro Guardar tabla 'nombre de tabla' Para, escriba un nuevo nombre y, a continuación, haga clic en Aceptar.
    5. Seleccione la misma tabla que seleccionó en el paso 2 y, a continuación, presione ELIMINAR.
    6. Cambie el nombre de la tabla que guardó en el paso 3 al nombre de la tabla original.
    7. Vuelva a establecer cualquier relación con la nueva tabla.

Más información

En Access, puede definir hasta 255 campos en una tabla. Si crea 255 campos y, a continuación, elimina 10, Access no libera los campos del recuento de columnas internas. Además, para cada campo cuyas propiedades modifique, Access crea un campo nuevo y no libera el campo original del recuento de columnas internas.

Pasos para reproducir el comportamiento

Nota

El código de ejemplo de este artículo usa objetos de acceso a datos de Microsoft. Para que este código se ejecute correctamente, debe hacer referencia a la Biblioteca de objetos de Microsoft DAO 3.6. Para ello, haga clic en Referencias en el menú Herramientas del Editor de Visual Basic y asegúrese de que la casilla Biblioteca de objetos de Microsoft DAO 3.6 está activada.

  1. Cree el siguiente Visual Basic para Aplicaciones para crear una nueva tabla con 255 campos:
' ****************************************************************
' 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. Escriba la siguiente línea en la ventana Inmediato para ejecutar la función y crear la tabla:

    Fill_Table
    
  2. Vea la tabla Prueba de campo en la vista Diseño y, a continuación, elimine el último campo para que solo haya 254 campos definidos en la tabla.

  3. Vuelva a agregar el campo e intente guardar la tabla. Tenga en cuenta que recibe los siguientes mensajes de error:

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

Referencias

Para obtener más información acerca de las especificaciones de la base de datos, haga clic en Ayuda de Microsoft Access en el menú Ayuda, escriba Especificaciones de Access en el Asistente para Office o en el Asistente para respuestas y, a continuación, haga clic en Buscar para ver los temas devueltos.