Compartir a través de


Puede recibir un mensaje de error al intentar insertar un nuevo registro en una tabla que contiene un campo Autonumérico en Access.

Número de KB original: 884185

Síntomas

Al intentar insertar un nuevo registro en una tabla que tiene un campo Autonumérico , puede recibir el siguiente mensaje de error:

Los cambios solicitados en la tabla no se realizaron correctamente porque crearían valores duplicados en el índice, clave principal o relación. Cambie los datos en el campo o los campos que contienen datos duplicados, quite el índice o vuelva a definir el índice para permitir entradas duplicadas e inténtelo de nuevo.

Captura de pantalla del mensaje de error después de insertar un nuevo registro en una tabla.

Nota:

Es posible que la tabla no tenga relaciones ni índices.

Causa

Este problema se produce cuando el campo Autonumeración se ha inicializado incorrectamente.

Solución

Hay varios métodos que pueden resolver este problema.

Método 1: Realizar compactación y reparación

Para compactar la base de datos, siga estos pasos:

  1. Iniciar acceso.

  2. Abra la base de datos de Access.

    Nota:

    Si ve el cuadro de diálogo Advertencia de seguridad, haga clic en Abrir.

  3. Haga clic en la pestaña de la cinta herramientas de base de datos y, a continuación, haga clic en Compactar y reparar base de datos desde dentro del grupo Herramientas.

    Nota:

    Las versiones anteriores de Access pueden tener la opción Compact and Repair Database (Compactar y reparar base de datos) ubicada en otro lugar; consulte la documentación de la versión específica de Access para buscar esta opción.

Para restablecer manualmente el valor de inicialización del campo Autonumeración , use uno de los métodos siguientes.

Método 2: Usar una consulta de definición de datos

Abra la base de datos que tiene la tabla (base de datos back-end) en Access:

  1. En la pestaña Crear , haga clic en Diseño de consultas en el grupo Consultas .

  2. En el cuadro de diálogo Mostrar tabla , haga clic en Cerrar.

  3. En la pestaña Diseño , haga clic en vista SQL en el grupo Resultados .

  4. Escriba lo siguiente en la ventana Query1 :

    ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
    

    Nota:

    <TableName> es un marcador de posición para el nombre de la <tabla. AutoNumFieldName> es un marcador de posición para el nombre del campo Autonumeración . iMaxID es un marcador de posición para el valor máximo actual en el campo más 1.

  5. En la pestaña Diseño , haga clic en Ejecutar en el grupo Resultados .

Método 3: Ejecución del código de Visual Basic para Aplicaciones

  1. En la pestaña Crear , haga clic en la flecha abajo en Macro y, a continuación, haga clic en Módulo.

  2. Pegue el código siguiente en la Editor de Visual Basic.

    Sub ResetAuto()
      Dim iMaxID As Long
      Dim sqlFixID As String
      iMaxID = DMax("<AutonumberFieldName>", "<TableName>") + 1
      sqlFixID = "ALTER TABLE <TableName> ALTER COLUMN <AutonumberFieldName> COUNTER(" & <iMaxID> & ",1)"
      DoCmd.RunSQL sqlFixID
    End Sub
    

    Nota:

    El marcador de posición <AutonumberFieldName> representa el nombre del campo Autonumérico. El marcador de posición <TableName> representa el nombre de la tabla.

  3. En el menú Ejecutar, haga clic en Ejecutar sub/UserForm.

    Nota:

    Debe cerrar la tabla antes de usar cualquiera de los métodos. No es necesario guardar la consulta o el módulo después de usar correctamente cualquiera de los métodos.

Pasos para reproducir este comportamiento

  1. Creación de una base de datos en blanco

  2. Cree una nueva tabla denominada Table1 que contenga los dos campos siguientes:

    Field1: Autonumeración (clave principal) Field2: Texto

  3. Agregue los seis registros siguientes a Table1.

    Campo 1 Field2
    1 A
    2 N
    3 C
    4 D
    5 E
    6 F
  4. Elimine el registro donde Field1 tiene el valor 3.

  5. En la pestaña Crear , haga clic en Diseño de consultas en el grupo Consultas .

  6. En el cuadro de diálogo Mostrar tabla , haga clic en Cerrar.

  7. En la pestaña Diseño , haga clic en vista SQL en el grupo Resultados .

  8. Escriba lo siguiente en la ventana Query1 :

    INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
    
  9. En la pestaña Diseño , haga clic en Ejecutar en el grupo Resultados .

  10. Abra Table1 e intente agregar un nuevo registro. Recibirá el mensaje de error que se menciona en la sección "Síntomas".