Vous pouvez recevoir un message d’erreur lorsque vous essayez d’insérer un nouvel enregistrement dans une table qui contient un champ Numéroauto dans Access
Numéro de la base de connaissances d’origine : 884185
Symptômes
Lorsque vous essayez d’insérer un nouvel enregistrement dans une table contenant un champ Numéroauto , vous pouvez recevoir le message d’erreur suivant :
Modifications non effectuées : risque de doublons dans champs index, clé principale ou relation interdisant les doublons. Modifiez les données des champs contenant les doublons, enlevez ou redéfinissez l’index pour permettre les doublons et recommencez.
Remarque
La table peut ne pas avoir de relations ou d’index.
Cause
Ce problème se produit lorsque le champ Numéroauto a été correctement initialisé.
Résolution
Plusieurs méthodes peuvent résoudre ce problème.
Méthode 1 : Effectuer un compactage et une réparation
Pour compacter la base de données, procédez comme suit :
Démarrez Access.
Ouvrez la base de données Access.
Remarque
Si la boîte de dialogue Avertissement de sécurité s’affiche, cliquez sur Ouvrir.
Cliquez sur l’onglet du ruban Outils de base de données, puis cliquez sur Compacter et réparer une base de données dans le groupe Outils.
Remarque
Les versions précédentes d’Access peuvent avoir l’option Compacter et réparer la base de données située ailleurs. Consultez la documentation de votre version spécifique d’Access pour localiser cette option.
Pour réinitialiser manuellement la valeur initiale du champ NuméroAuto , utilisez l’une des méthodes suivantes.
Méthode 2 : Utiliser une requête de définition de données
Ouvrez la base de données contenant la table (base de données principale) dans Access :
Sous l’onglet Créer , cliquez sur Création de requête dans le groupe Requêtes .
Dans la boîte de dialogue Afficher la table , cliquez sur Fermer.
Sous l’onglet Création , cliquez sur Vue SQL dans le groupe Résultats .
Tapez ce qui suit dans la fenêtre Requête1 :
ALTER TABLE TableName ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1);
Remarque
<TableName> est un espace réservé pour le nom de la <table. AutoNumFieldName> est un espace réservé pour le nom du champ NuméroAuto . iMaxID est un espace réservé pour la valeur maximale actuelle dans le champ plus 1.
Sous l’onglet Création , cliquez sur Exécuter dans le groupe Résultats .
Méthode 3 : Exécuter du code Visual Basic pour Applications
Sous l’onglet Créer , cliquez sur la flèche vers le bas sous Macro, puis sur Module.
Collez le code suivant dans le Rédacteur Visual Basic.
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
Remarque
L’espace réservé <AutonumberFieldName> représente le nom du champ NuméroAuto. L’espace réservé <TableName> représente le nom de la table.
Dans le menu Exécuter, cliquez sur Exécuter sub/UserForm.
Remarque
Vous devez fermer la table avant d’utiliser l’une ou l’autre méthode. Vous n’avez pas besoin d’enregistrer la requête ou le module après avoir utilisé l’une ou l’autre des méthodes
Procédures pour reproduire le problème
Créer une base de données vide
Créez une table nommée Table1 qui contient les deux champs suivants :
Champ1 : Numéroauto (clé primaire) Champ2 : Texte
Ajoutez les six enregistrements suivants à Table1.
Field1 Field2 1 A 2 B 3 C 4 D 5 E 6 F Supprimez l’enregistrement où Field1 a la valeur 3.
Sous l’onglet Créer , cliquez sur Création de requête dans le groupe Requêtes .
Dans la boîte de dialogue Afficher la table , cliquez sur Fermer.
Sous l’onglet Création , cliquez sur Vue SQL dans le groupe Résultats .
Tapez ce qui suit dans la fenêtre Requête1 :
INSERT INTO Table1 (Field1, Field2) SELECT 3 AS Field1, "C" AS Field2;
Sous l’onglet Création , cliquez sur Exécuter dans le groupe Résultats .
Ouvrez Table1, puis essayez d’ajouter un nouvel enregistrement. Vous recevez le message d’erreur mentionné dans la section « Symptômes ».
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour