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.

Skärmbild av felmeddelandet när du har infogat en ny post i en tabell.

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:

  1. Starta Access.

  2. Öppna Access-databasen.

    Anteckning

    Om dialogrutan Säkerhetsvarning visas klickar du på Öppna.

  3. 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:

  1. Klicka Frågedesign i gruppen Frågorfliken Skapa.

  2. Klicka på Stäng i dialogrutan Visa tabell.

  3. På fliken Design klickar du SQL i gruppen Resultat.

  4. 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.

  5. Klicka på Kör i gruppen Resultat på fliken Design.

Metod 3: Kör Visual Basic for Applications kod

  1. På fliken Skapa klickar du på nedpilen under Makro och klickar sedan på Modul.

  2. 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 Sub
    

    Anteckning

    Platshållaren <AutonumberFieldName> representerar namnet på Räknare-fältet. Platshållaren <TableName> representerar namnet på tabellen.

  3. 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

  1. Skapa en ny tom databas

  2. Skapa en ny tabell med namnet Tabell1 som innehåller följande två fält:

    Fält1: Räknare (primärnyckel) fält2: Text

  3. 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
  4. Ta bort posten där Fält1 har värdet 3.

  5. Klicka Frågedesign i gruppen Frågorfliken Skapa.

  6. Klicka på Stäng i dialogrutan Visa tabell.

  7. På fliken Design klickar du SQL i gruppen Resultat.

  8. Skriv följande i fönstret Fråga1:

    INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
    
  9. Klicka på Kör i gruppen Resultat på fliken Design.

  10. Öppna Tabell1 och försök sedan lägga till en ny post. Du får felmeddelandet som nämns i avsnittet "Symptom".