Erreur Ms Access '3022'

Résumé:

Ce blog est entièrement dédié à fournir la solution concernant l’une des erreurs MS Access très courantes. i.e Erreur d’accès 3022: “Les modifications que vous avez demandées à la table n’ont pas abouti”. Pour savoir comment corriger ce code d’erreur spécifique, vous devez essayer les corrections suivantes mentionnées dans ce post.

Scénario pratique

Je reçois Erreur d’accès 3022: Les modifications que vous avez demandées à la table n’ont pas abouti car elles créeraient des valeurs dupliquées dans l’index primaire, la clé primaire ou la relation …

Le code est un mode d’édition que j’ai créé qui supprime tous les enregistrements de la table où les critères sont trouvés. Il peut y avoir des enregistrements illimités basés sur ce qui est dans tblMulti.

Il y a un PK typique dans chacun et il est configuré pour numéroter automatiquement aucun doublon autorisé.

Je ne peux pas trouver où je me suis trompé. Pouvez-vous s’il vous plaît regarder cela et me diriger dans une direction pour le réparer?

À propos de l’erreur d’exécution Access “3022”:

Vous pouvez récupérer cette erreur d’accès ms lorsque vous essayez d’insérer un nouvel enregistrement dans la table d’accès qui contenait déjà un champ Autonumber. Ce problème spécifique se produit dans Microsoft Office Access 2007 ou dans Microsoft Office Access 2003.

À ce moment l’application envoie le message d’erreur suivant:

Les modifications que vous avez demandées à la table n’ont pas abouti car elles créeraient des valeurs en double dans l’index, la clé primaire ou la relation. Modifiez les données dans le champ ou les champs contenant des données en double, supprimez l’index ou redéfinissez l’index pour autoriser les entrées en double et réessayez.

Remarque: vérifiez que la table n’a aucune relation ou index.

L’accès «Erreur d’exécution ‘3022»: Les modifications que vous avez demandées à la table échouaient généralement lorsqu’elles créaient des valeurs en double dans l’index, la clé primaire ou la relation.

Vous devez donc modifier les données dans le champ contenant des données en double, supprimer l’index ou redéfinir l’index pour autoriser les entrées en double et réessayer. Ce problème survient généralement au moment de l’enregistrement des modifications apportées à un rapport ou de la génération d’un rapport.

Cause

  • La cause la plus courante de cette erreur d’accès ‘3022’ est la corruption dans le jeu de spécifications.
  • La base de données Access a été compactée d’une manière ou d’une autre.
  • La table contient un champ de numérotation automatique qui n’est pas réinséré correctement.

? Vous devez avoir installé Microsoft Jet 4.0 Database Engine Service Pack 8 (SP8).

  • Vous pouvez avoir ajouté les données de la table liée 1 à la table 2 en utilisant l’option Base de données actuelle à la place d’une autre base Supprimer l’enregistrement de la table 1 liée et rajouter l’enregistrement exact à partir de la table 2 .

Résolution à Fixer “Les modifications que vous avez demandées à la table n’a pas été réussie ”  L’erreur

Vous devez compacter le jeu de spécifications actuel, voir compactage d’une base de données FRx. Si ces procédures de compactage échouent, contactez le support FRx pour réparer le fichier. Mais si cela réussit, mais que le composant de rapport donne toujours le message d’erreur, essayez d’exporter le composant dans un nouveau jeu de spécifications ou recréez le composant.

Solution de contournement 1 ::

Résoudre les modifications que vous avez demandées à la table n’ont pas réussi dans Access 2003/2007

Pour résoudre ce problème dans la base de données Access 2007, vous devez recréer les requêtes d’ajout dans la base de données dbFrontEnd.accdb. Pour ce faire, appuyez sur Ajouter dans le groupe Type de requête dans l’onglet Conception, puis cliquez sur l’option Autre base de données.

Access 2003

Pour résoudre ce problème dans la base de données Access 2007, vous devez recréer les requêtes d’ajout dans la base de données dbFrontEnd.mdb. Pour cela, il suffit de cliquer dans la fenêtre Ajouter une requête dans le menu Requête dans la vue de conception de la requête, puis de cliquer sur Une autre base de données.

Pour résoudre ce problème, la première chose que vous devez faire est de compacter la base de données et de réinitialiser ensuite le champ seed Autonumber. Pour compacter la base de données, procédez comme suit:

  1. Démarrez votre application Access.
  2. Ensuite, ouvrez la base de données Access. Remarque: Si cela ouvre la boîte de dialogue Avertissement de sécurité, appuyez sur l’option Ouvrir.
  3. Dans Access 2007

o Vous devez appuyer sur le bouton Microsoft Office, allez dans l’option Gérer, puis cliquez sur Compacter et réparer la base de données.

Dans Access 2003

  • Accédez au menu de l’outil, cliquez sur Utilitaires de base de données, puis sur Compacter et réparer la base de données.
  1. Si vous voyez cette boîte de dialogue Avertissement de sécurité, appuyez sur l’option Ouvrir.

Pour réinitialiser la graine de champ Autonumber, vous pouvez essayer l’une des méthodes suivantes:

Méthode 1: Utiliser une requête de définition de données

Ouvrez la base de données qui a la table dans Access 2007.

  1. Allez dans l’onglet Créer; cliquez sur Conception de requête dans l’autre
  2. Dans la boîte de dialogue Afficher la table, appuyez sur l’option Fermer.
  3. Maintenant, allez dans l’onglet Conception, cliquez sur Vue SQL dans les résultats
  4. Tapez les éléments suivants dans la fenêtre Query1:

ALTER TABLE TableNameALTER COLUMN AutoNumFieldNameCOUNTER (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 Autonumber. iMaxID est un espace réservé pour la valeur maximale actuelle dans le champ plus 1.

  1. Dans l’onglet Designtab, appuyez sur l’option Exécuter dans Résultats

Access 2003

  1. Cliquez sur requêtes sous objets dans la fenêtre de base de données.
  2. Ensuite, cliquez sur Nouveau, cliquez sur la vue de conception, puis cliquez sur OK.
  3. Dans la boîte de dialogue Afficher le tableau de bord ouverte, cliquez sur l’option Fermer.
  4. Dans le menu de requête, cliquez sur Spécifique SQL, puis sur Définition de données.
  5. Dans la fenêtre Requête de définition de données, tapez la commande suivante. ALTER TABLE TableNameALTER COLUMN AutoNumFieldNameCOUNTER (iMaxID, 1); Remarque:

Ici, TableName indique clairement le nom de la table. Et AutoNumFieldName indique le nom du champ Autonumber. Considérant que, l’iMaxID représente la valeur maximale actuelle dans le champ plus 1.

  1. Dans le menu Requête, cliquez sur Exécuter.

aussi lire

Guide étape par étape pour réparer l’erreur MS Access 3218 “Impossible de mettre à jour” Erreurs de verrouillage des enregistrements

Des choses Vous devez essayer de résoudre le problème de corruption de base de données MS Access …!

Méthode 2: exécuter le code Visual Basic pour Applications

Accès 2007

  • Allez maintenant dans l’onglet Créer, cliquez sur la flèche vers le bas sous Macro, puis cliquez sur Module.

Access 2003

  • Accédez à la fenêtre de base de données, cliquez sur Modules sous Objets, puis sur Nouveau.
  • Ensuite, dans Visual Basic Editor, collez le code suivant.

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 Autonumber. L’espace réservé <TableName> représente le nom de la table.

  1. Dans le menu Exécuter, cliquez sur Exécuter Sub / UserForm.

Remarque:

Fermez la table avant d’utiliser l’une des deux méthodes. Vous n’avez pas besoin d’enregistrer la requête ou le module après avoir utilisé avec succès la méthode ci-dessus

Solution de contournement 2 ::

Afin de résoudre l’erreur ‘3022’: Les modifications que vous avez demandées à la table n’ont pas réussi dans la base de données d’accès 2013/2016. L’utilisateur doit concevoir les tables pour éliminer la possibilité d’entrer des valeurs en double dans le champ ou le champ de clé primaire qui utilise un index unique.

Si la clé primaire utilisée doit prendre en charge les valeurs dupliquées, vous devez supprimer la clé primaire actuelle et ajouter un champ NuméroAuto à votre table qui fonctionne comme une clé primaire.

Pour supprimer la clé primaire

La suppression de la clé primaire ne supprime pas le ou les champs de votre table. Plutôt, supprime la désignation de clé primaire de ces champs.

Il supprime également l’index de la clé primaire créée pour la clé primaire.

  1. Avant de supprimer la clé primaire, assurez-vous qu’elle ne contient aucune relation de table. Si vous essayez toujours de supprimer la clé primaire qui contient les relations, Access vous avertit que vous devez d’abord supprimer la relation.
  2. Dans le volet de navigation, faites un clic droit sur la table dans laquelle vous souhaitez supprimer la clé primaire et appuyez sur l’option Mode Création.
  3. Appuyez sur le sélecteur de ligne actuel pour la dernière clé primaire.
  4. Si la clé primaire contient un seul champ, cliquez sur le sélecteur de ligne pour ce champ.
  5. Mais s’il comporte plusieurs champs, appuyez sur le sélecteur de lignes pour n’importe quel champ de la clé primaire.
  6. Maintenant, allez dans l’onglet Conception du groupe Outils et cliquez sur l’option Clé primaire.

Après avoir effectué cette procédure complète, vous verrez que l’indicateur de clé est supprimé du champ ou des champs que vous avez précédemment spécifiés comme clé primaire.

Pour ajouter une clé primaire Autonumber

Lorsqu’un utilisateur crée une nouvelle table dans la vue de feuille de données, Access par défaut crée une clé primaire pour vous et lui assigne le type de données NuméroAuto.

 Si vous avez une table existante à laquelle vous souhaitez ajouter un champ de clé primaire, puis l’ouvre dans la vue de conception:

  • Accédez au volet de navigation et faites un clic droit sur la table à laquelle vous voulez ajouter la clé primaire après avoir appuyé sur la vue de conception.
  • Recherchez maintenant la première ligne vide dans la grille de création de table.
  • Dans la colonne Nom du champ, attribuez un nom.
  • Dans la colonne Type de données, cliquez sur la flèche déroulante et tapez sur l’option NuméroAuto.
  • Dans Propriétés du champ, dans Nouvelles valeurs, cliquez sur l’option Incrément pour utiliser des valeurs numériques incrémentielles pour la clé primaire, ou cliquez sur Aléatoire pour utiliser des nombres aléatoires.

Vous souhaiterez peut-être voir les index des tables pour évaluer leur impact sur les performances ou pour vous assurer que les champs particuliers sont indexés.

Emballer:

Heureusement, tous les correctifs manuels mentionnés ci-dessus vous aident à résoudre cette erreur d’exécution MS Access 3022. Après avoir utilisé ces correctifs, partagez vos opinions dans la section des commentaires.



Comment réparer l’erreur ‘3022’ de MS Access: “Les changements que vous avez demandés à la table n’ont pas réussi”?