È 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.
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:
Avviare Access.
Aprire il database di Access.
Nota
Se viene visualizzata la finestra di dialogo Avviso di sicurezza, fare clic su Apri.
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:
Nella scheda Crea fare clic su Progettazione query nel gruppo Query .
Nella finestra di dialogo Mostra tabella fare clic su Chiudi.
Nella scheda Progettazione fare clic su Visualizzazione SQL nel gruppo Risultati .
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.
Nella scheda Progettazione fare clic su Esegui nel gruppo Risultati .
Metodo 3: Eseguire il codice Visual Basic, Applications Edition
Nella scheda Crea fare clic sulla freccia giù in Macro e quindi su Modulo.
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.
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
Creare un nuovo database vuoto
Creare una nuova tabella denominata Table1 contenente i due campi seguenti:
Campo1: Numerazione automatica (chiave primaria) Campo2: Testo
Aggiungere i sei record seguenti a Table1.
Campo1 Campo2 1 A 2 B 3 C 4 D 5 E 6 F Eliminare il record in cui Field1 ha il valore 3.
Nella scheda Crea fare clic su Progettazione query nel gruppo Query .
Nella finestra di dialogo Mostra tabella fare clic su Chiudi.
Nella scheda Progettazione fare clic su Visualizzazione SQL nel gruppo Risultati .
Digitare quanto segue nella finestra Query1 :
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
Nella scheda Progettazione fare clic su Esegui nel gruppo Risultati .
Aprire Table1 e quindi provare ad aggiungere un nuovo record. Viene visualizzato il messaggio di errore indicato nella sezione "Sintomi".
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per