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.
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:
Spusťte Access.
Otevřete databázi Accessu.
Poznámka
Pokud se zobrazí dialogové okno Upozornění zabezpečení, klikněte na Otevřít.
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:
Na kartě Vytvořit klikněte ve skupině Dotazy na Návrh dotazu.
V dialogovém okně Zobrazit tabulku klikněte na Zavřít.
Na kartě Návrh klikněte ve skupině Výsledky na Zobrazení SQL.
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.
Na kartě Návrh klikněte ve skupině Výsledky na Spustit.
Metoda 3: Spuštění kódu jazyka Visual Basic for Applications
Na kartě Vytvořit klikněte na šipku dolů pod položkou Makro a potom klikněte na Modul.
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.
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í
Vytvoření nové prázdné databáze
Vytvořte novou tabulku s názvem Tabulka1 , která obsahuje následující dvě pole:
Pole1: Automatické číslo (primární klíč) Pole2: Text
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 Odstraňte záznam, ve kterém má Pole1 hodnotu 3.
Na kartě Vytvořit klikněte ve skupině Dotazy na Návrh dotazu.
V dialogovém okně Zobrazit tabulku klikněte na Zavřít.
Na kartě Návrh klikněte ve skupině Výsledky na Zobrazení SQL.
V okně Dotaz1 zadejte následující:
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
Na kartě Návrh klikněte ve skupině Výsledky na Spustit.
Otevřete tabulku Table1 a zkuste přidat nový záznam. Zobrazí se chybová zpráva, která je uvedena v části "Příznaky".
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro