Du kan få ett felmeddelande när du försöker infoga en ny post i en tabell som innehåller ett Räknare-fält 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.
Ursprungligt KB-nummer: 884185
Symptom
När du försöker infoga en ny post i en tabell som har ett Räknare-fält kan du få följande felmeddelande:
De ändringar du begärde av tabellen lyckades inte eftersom de kunde skapa dubblettvärden i index, primärnyckel eller relation. Ändra data i fältet eller fälten som innehåller dubblettdata, ta bort indexet eller omdefiniera indexet för att tillåta dubblettposter och försök igen.
Anteckning
Tabellen kanske inte har några relationer eller index.
Orsak
Det här problemet uppstår när Räknare-fältet har lagts till felaktigt i fältet.
Lösning
Det finns flera metoder som kan lösa problemet.
Metod 1: Utföra komprimering och reparation
Så här komprimerar du databasen:
Starta Access.
Öppna Access-databasen.
Anteckning
Om dialogrutan Säkerhetsvarning visas klickar du på Öppna.
Klicka på menyfliken Databasverktyg och klicka sedan på Komprimera och reparera databas från gruppen Verktyg.
Anteckning
I tidigare versioner av Access kan alternativet Komprimera och reparera databas finnas någon annanstans, i dokumentationen för din specifika version av Access hittar du det här alternativet.
Om du vill återställa Räknare-fältets startmetod manuellt använder du någon av följande metoder.
Metod 2: Använda en datadefinitionsfråga
Öppna databasen som innehåller tabellen (backend-databasen) i Access:
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
Klicka på Stäng i dialogrutan Visa tabell.
På fliken Design klickar du SQL i gruppen Resultat.
Skriv följande i fönstret Fråga1:
ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);Anteckning
<TableName>är en platshållare för namnet på <table.AutoNumFieldName> fältet som platshållare för namnet på Räknare-fältet. iMaxID är en platshållare för det aktuella maxvärdet i fältet plus 1.
Klicka på Kör i gruppen Resultat på fliken Design.
Metod 3: Kör Visual Basic for Applications kod
På fliken Skapa klickar du på nedpilen under Makro och klickar sedan på Modul.
Klistra in följande kod i Visual Basic Editor.
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 SubAnteckning
Platshållaren <AutonumberFieldName> representerar namnet på Räknare-fältet. Platshållaren <TableName> representerar namnet på tabellen.
Klicka på Kör under-/användarformulär på menyn Kör.
Anteckning
Du måste stänga tabellen innan du använder någon av metoderna. Du behöver inte spara frågan eller modulen när du har använda någon av metoderna
Steg för att återskapa beteendet
Skapa en ny tom databas
Skapa en ny tabell med namnet Tabell1 som innehåller följande två fält:
Fält1: Räknare (primärnyckel) fält2: Text
Lägg till följande sex poster i Tabell1.
Fält1 Fält2 1 A 2 B 3 C 4 D 5 E 6 F Ta bort posten där Fält1 har värdet 3.
Klicka på Frågedesign i gruppen Frågor på fliken Skapa.
Klicka på Stäng i dialogrutan Visa tabell.
På fliken Design klickar du SQL i gruppen Resultat.
Skriv följande i fönstret Fråga1:
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;Klicka på Kör i gruppen Resultat på fliken Design.
Öppna Tabell1 och försök sedan lägga till en ny post. Du får felmeddelandet som nämns i avsnittet "Symptom".