Er kan een foutbericht worden weergegeven wanneer u een nieuwe record probeert in te voegen in een tabel met een veld voor automatisch nummeren in Access
Origineel KB-nummer: 884185
Symptomen
Wanneer u probeert een nieuwe record in te voegen in een tabel met een veld Autonummering , wordt mogelijk het volgende foutbericht weergegeven:
De wijzigingen die u in de tabel hebt aangevraagd, zijn niet geslaagd omdat ze dubbele waarden in de index, primaire sleutel of relatie zouden maken. Wijzig de gegevens in het veld of de velden die dubbele gegevens bevatten, verwijder de index of herdefinieer de index om dubbele vermeldingen toe te staan en probeer het opnieuw.
Opmerking
De tabel heeft mogelijk geen relaties of indexen.
Oorzaak
Dit probleem treedt op wanneer het veld Autonummering onjuist is gezaaid.
Oplossing
Er zijn meerdere methoden die dit probleem kunnen oplossen.
Methode 1: Comprimeren en herstellen uitvoeren
Voer de volgende stappen uit om de database te comprimeren:
Start Access.
Open de Access-database.
Opmerking
Als u het dialoogvenster Beveiligingswaarschuwing ziet, klikt u op Openen.
Klik op het linttabblad Hulpmiddelen voor databases en klik vervolgens in de groep Hulpprogramma's op Database comprimeren en herstellen.
Opmerking
In eerdere versies van Access kan de optie Database comprimeren en herstellen zich elders bevinden. Raadpleeg de documentatie voor uw specifieke versie van Access om deze optie te vinden.
Gebruik een van de volgende methoden om het veld voor autonummering handmatig opnieuw in te stellen.
Methode 2: Een gegevensdefinitiequery gebruiken
Open de database met de tabel (back-enddatabase) in Access:
Klik op het tabblad Maken op Queryontwerp in de groep Query's .
Klik in het dialoogvenster Tabel weergeven op Sluiten.
Klik op het tabblad Ontwerpen op SQL-weergave in de groep Resultaten .
Typ het volgende in het venster Query1 :
ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
Opmerking
<TableName> is een tijdelijke aanduiding voor de naam van de <tabel. AutoNumFieldName> is een tijdelijke aanduiding voor de naam van het veld Autonummering . iMaxID is een tijdelijke aanduiding voor de huidige maximumwaarde in het veld plus 1.
Klik op het tabblad Ontwerpen op Uitvoeren in de groep Resultaten .
Methode 3: Visual Basic for Applications-code uitvoeren
Klik op het tabblad Maken op de pijl-omlaag onder Macro en klik vervolgens op Module.
Plak de volgende code in de 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
Opmerking
De tijdelijke aanduiding <AutonumberFieldName> vertegenwoordigt de naam van het veld Autonummering. De tijdelijke aanduiding <TableName> vertegenwoordigt de naam van de tabel.
Klik in het menu Uitvoeren op Sub/UserForm uitvoeren.
Opmerking
U moet de tabel sluiten voordat u een van beide methoden gebruikt. U hoeft de query of de module niet op te slaan nadat u een van de methoden hebt gebruikt
Stappen voor het reproduceren van het gedrag
Een nieuwe lege database maken
Maak een nieuwe tabel met de naam Table1 die de volgende twee velden bevat:
Veld1: Veld autonummering (primaire sleutel) 2: Tekst
Voeg de volgende zes records toe aan Table1.
Veld1 Veld2 1 A 2 B 3 C 4 D 5 E 6 F Verwijder de record waarvan Veld1 de waarde 3 heeft.
Klik op het tabblad Maken op Queryontwerp in de groep Query's .
Klik in het dialoogvenster Tabel weergeven op Sluiten.
Klik op het tabblad Ontwerpen op SQL-weergave in de groep Resultaten .
Typ het volgende in het venster Query1 :
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
Klik op het tabblad Ontwerpen op Uitvoeren in de groep Resultaten .
Open Table1 en probeer een nieuwe record toe te voegen. U ontvangt het foutbericht dat wordt vermeld in de sectie Symptomen.
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor