Při pokusu o vložení nového záznamu do tabulky, která obsahuje pole automatického číslování v Accessu, se může zobrazit chybová zpráva.

Původní číslo KB: 884185

Příznaky

Při pokusu o vložení nového záznamu do tabulky, která obsahuje pole Automatické číslo , může se zobrazit následující chybová zpráva:

Změny požadované v tabulce nebyly úspěšné, protože by vytvořily duplicitní hodnoty v indexu, primárním klíči nebo relaci. Změňte data v poli nebo polích, která obsahují duplicitní data, odeberte index nebo předefinujte index tak, aby umožňoval duplicitní položky, a zkuste to znovu.

Snímek obrazovky s chybovou zprávou po vložení nového záznamu do tabulky

Poznámka

Tabulka nemusí obsahovat žádné relace ani indexy.

Příčina

K tomuto problému dochází v případě, že pole automatického číslo je nesprávně nasazeno.

Řešení

Existuje několik metod, které mohou tento problém vyřešit.

Metoda 1: Provedení komprimování a opravy

Pokud chcete zkomprimovat databázi, postupujte takto:

  1. Spusťte Access.

  2. Otevřete databázi Accessu.

    Poznámka

    Pokud se zobrazí dialogové okno Upozornění zabezpečení, klikněte na Otevřít.

  3. Klikněte na kartu Databázové nástroje na pásu karet a potom ve skupině Nástroje klikněte na Zkomprimovat a opravit databázi.

    Poznámka

    Předchozí verze Accessu můžou mít možnost Komprimovat a opravit databázi umístěnou jinde. Tuto možnost najdete v dokumentaci ke konkrétní verzi Accessu.

Pokud chcete ručně resetovat počáteční pole automatického číslování , použijte jednu z následujících metod.

Metoda 2: Použití dotazu definice dat

Otevřete databázi, která obsahuje tabulku (back-endovou databázi) v Accessu:

  1. Na kartě Vytvořit klikněte ve skupině Dotazy na Návrh dotazu.

  2. V dialogovém okně Zobrazit tabulku klikněte na Zavřít.

  3. Na kartě Návrh klikněte ve skupině Výsledky na Zobrazení SQL.

  4. V okně Dotaz1 zadejte následující:

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

    Poznámka

    <TableName> je zástupný symbol pro název <tabulky. AutoNumFieldName> je zástupný symbol pro název pole Automatické číslo . iMaxID je zástupný symbol pro aktuální maximální hodnotu v poli plus 1.

  5. Na kartě Návrh klikněte ve skupině Výsledky na Spustit.

Metoda 3: Spuštění kódu jazyka Visual Basic for Applications

  1. Na kartě Vytvořit klikněte na šipku dolů pod položkou Makro a potom klikněte na Modul.

  2. Do Editor Jazyka Visual Basic vložte následující kód.

    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
    

    Poznámka

    Zástupný symbol <AutonumberFieldName> představuje název pole Automatické číslo. Zástupný symbol <TableName> představuje název tabulky.

  3. V nabídce Run (Spustit) klikněte na Run Sub/UserForm (Spustit pod/uživatelský formulář).

    Poznámka

    Před použitím některé z metod je nutné tabulku zavřít. Po úspěšném použití některé z metod nemusíte dotaz ani modul ukládat.

Kroky pro reprodukci chování

  1. Vytvoření nové prázdné databáze

  2. Vytvořte novou tabulku s názvem Tabulka1 , která obsahuje následující dvě pole:

    Pole1: Automatické číslo (primární klíč) Pole2: Text

  3. Do tabulky Table1 přidejte následujících šest záznamů.

    Pole1 Pole 2
    1 A
    2 B
    3 C
    4 D
    5 E
    6 F
  4. Odstraňte záznam, ve kterém má Pole1 hodnotu 3.

  5. Na kartě Vytvořit klikněte ve skupině Dotazy na Návrh dotazu.

  6. V dialogovém okně Zobrazit tabulku klikněte na Zavřít.

  7. Na kartě Návrh klikněte ve skupině Výsledky na Zobrazení SQL.

  8. V okně Dotaz1 zadejte následující:

    INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
    
  9. Na kartě Návrh klikněte ve skupině Výsledky na Spustit.

  10. Otevřete tabulku Table1 a zkuste přidat nový záznam. Zobrazí se chybová zpráva, která je uvedena v části "Příznaky".