È possibile che venga visualizzato un messaggio di errore quando si tenta di inserire un nuovo record in una tabella contenente un campo Numerazione automatica in Access

Numero KB originale: 884185

Sintomi

Quando si tenta di inserire un nuovo record in una tabella con un campo Numerazione automatica , è possibile che venga visualizzato il messaggio di errore seguente:

L'apporto modifiche non è riuscito perché si è cercato di duplicare i valori nell'indice, nella chiave primaria o nella relazione. Modificare i dati nel campo o nei campi che contengono dati duplicati, rimuovere l'indice o ridefinire l'indice per consentire l'inserimento di voci duplicate, quindi ritentare l'operazione.

Screenshot del messaggio di errore dopo l'inserimento di un nuovo record in una tabella.

Nota

La tabella potrebbe non avere relazioni o indici.

Causa

Questo problema si verifica quando il campo Numerazione automatica è stato sottoposto a seeding non corretto.

Risoluzione

Esistono più metodi che possono risolvere il problema.

Metodo 1: Eseguire la compattazione e la riparazione

Per compattare il database, seguire questa procedura:

  1. Avviare Access.

  2. Aprire il database di Access.

    Nota

    Se viene visualizzata la finestra di dialogo Avviso di sicurezza, fare clic su Apri.

  3. Fare clic sulla scheda della barra multifunzione Strumenti di database e quindi fare clic su Compatta e ripristina database dal gruppo Strumenti.

    Nota

    Le versioni precedenti di Access potrebbero avere l'opzione Compact and Repair Database disponibile altrove. Per individuare questa opzione, vedere la documentazione relativa alla versione specifica di Access.

Per reimpostare manualmente il valore di inizializzazione del campo Numerazione automatica , utilizzare uno dei metodi seguenti.

Metodo 2: Usare una query di definizione dei dati

Aprire il database con la tabella (database back-end) in Access:

  1. Nella scheda Crea fare clic su Progettazione query nel gruppo Query .

  2. Nella finestra di dialogo Mostra tabella fare clic su Chiudi.

  3. Nella scheda Progettazione fare clic su Visualizzazione SQL nel gruppo Risultati .

  4. Digitare quanto segue nella finestra Query1 :

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

    Nota

    <TableName> è un segnaposto per il nome della <tabella. AutoNumFieldName> è un segnaposto per il nome del campo Numerazione automatica . iMaxID è un segnaposto per il valore massimo corrente nel campo più 1.

  5. Nella scheda Progettazione fare clic su Esegui nel gruppo Risultati .

Metodo 3: Eseguire il codice Visual Basic, Applications Edition

  1. Nella scheda Crea fare clic sulla freccia giù in Macro e quindi su Modulo.

  2. Incollare il codice seguente nella Editor di 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

    Il segnaposto <AutonumberFieldName> rappresenta il nome del campo Numerazione automatica. Il segnaposto <TableName> rappresenta il nome della tabella.

  3. Scegliere Esegui sotto/UserForm dal menu Esegui.

    Nota

    È necessario chiudere la tabella prima di usare uno dei due metodi. Non è necessario salvare la query o il modulo dopo aver usato correttamente uno dei due metodi

Passaggi per riprodurre il comportamento

  1. Creare un nuovo database vuoto

  2. Creare una nuova tabella denominata Table1 contenente i due campi seguenti:

    Campo1: Numerazione automatica (chiave primaria) Campo2: Testo

  3. Aggiungere i sei record seguenti a Table1.

    Campo1 Campo2
    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
  4. Eliminare il record in cui Field1 ha il valore 3.

  5. Nella scheda Crea fare clic su Progettazione query nel gruppo Query .

  6. Nella finestra di dialogo Mostra tabella fare clic su Chiudi.

  7. Nella scheda Progettazione fare clic su Visualizzazione SQL nel gruppo Risultati .

  8. Digitare quanto segue nella finestra Query1 :

    INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
    
  9. Nella scheda Progettazione fare clic su Esegui nel gruppo Risultati .

  10. Aprire Table1 e quindi provare ad aggiungere un nuovo record. Viene visualizzato il messaggio di errore indicato nella sezione "Sintomi".