Summary: Ce blogue traite des différentes situations et des causes possibles qui peuvent entraîner l'erreur 3022 de la base de données Access. Il présente également les solutions permettant de résoudre l'erreur 3022.
L’erreur d’accès 3022 “Les modifications que vous avez demandé d’apporter à la table n’ont pas abouti” peut se produire dans l’une ou l’autre de ces situations :
- Lors de la saisie d’un nouvel enregistrement dans une table existante comportant un champ “Numérotation automatique”.
- Création d’un formulaire ou d’un rapport
- Lors de l’accès à un fichier de base de données stocké sur un partage de réseau
Conseil ! Si vous souhaitez restaurer rapidement votre fichier de base de données Access (.ACCDB/.MDB) inaccessible sans perte de données, utilisez le logiciel Stellar Repair for Access. Ce logiciel permet de réparer le fichier de base de données et de récupérer tout son contenu sans aucune modification. Téléchargez l’outil de réparation Access à partir du lien ci-dessous pour vérifier sa fonctionnalité. |
Il s’agit d’une erreur d’exécution de Microsoft Access qui est signalée par le message suivant :
Figure 1 – Erreur 3022 de Microsoft Access
Causes possibles de l’erreur d’accès 3022 et leurs solutions
Vous trouverez ci-dessous les raisons possibles de l’erreur, ainsi que les solutions :
Cause 1 – Le jeu de spécifications est corrompu
Selon Microsoft, l’erreur Access 3022 peut se produire en raison d’un ensemble de spécifications corrompu.
Solution – Compacter l’ensemble des spécifications
Essayez de compacter le jeu de spécifications actuel de votre base de données Access. Si le compactage réussit, mais que vous obtenez toujours l’erreur Access 3022 à l’ouverture d’un composant de rapport, exportez ce composant dans un nouveau jeu de spécifications ou recréez-le. Mais si le processus de compactage échoue, essayez de réparer le fichier de base de données.
Cause 2 – Problème avec la base de données Access
Votre base de données Access peut se comporter différemment en raison d’une corruption dans la table.
Solution – Compacter et réparer la base de données
L’exécution d’une opération de compactage et de réparation sur votre base de données peut aider à résoudre le problème. Procédez comme suit :
- Ouvrez votre base de données Access.
- Dans la fenêtre qui s’affiche, appuyez sur la croix (x) pour fermer la table de la base de données (comme le montre l’image ci-dessous).
Figure 2 – Fermer la table de la base de données
- Cliquez sur l’onglet Outils de base de données, puis sur Compacter et réparer la base de données dans le menu Outils.
Figure 3 – Sélectionner Compact and Repair Database (compacter et réparer la base de données)
- Dans la fenêtre Base de données à compacter, cliquez sur Parcourir pour sélectionner la base de données à compacter et à réparer. Double-cliquez sur la base de données.
Vous trouverez la copie de votre base de données compactée et réparée au même endroit que la base de données originale.
Cause 3 – Le champ de numérotation automatique n’est pas correctement renseigné
Une autre raison fréquente qui peut conduire à l’erreur MS Access 3022 est que le champ Autonumber de la clé primaire n’est pas correctement ensemencé.
Solution – Réinitialiser manuellement le champ Autonumber
Il existe deux méthodes pour réinitialiser manuellement le champ Autonumber.
Méthode 1 : Utiliser une requête de définition des données
Vous pouvez réinitialiser le champ “Autonumber” en le supprimant. Pour ce faire, ouvrez votre tableau en vue Conception, puis réinsérez-le. Les étapes détaillées sont énumérées ci-dessous :
- Ouvrez une base de données dans Access, cliquez sur l’onglet Créer et sélectionnez Conception de requête dans le groupe Requêtes.
Figure 4 – Conception d’une requête de sélection
- Cliquez sur Fermer lorsque la boîte de dialogue Afficher le tableau s’ouvre.
Figure 5 – Fermeture de la boîte Show Table
- Dans l’onglet Conception, sélectionnez l’option Vue SQL dans le groupe Résultats.
Figure 6 – Sélection de la vue SQL
- Dans l’écran Query1, saisissez le code suivant :
ALTER TABLE Table1 ALTER COLUMN AutoNumFieldName COUNTER(iMaxID,1) ;
Figure 7 – Requête dans Access
- Exécutez maintenant la requête ci-dessus en cliquant sur l’option Exécuter dans le groupe Résultats.
Méthode 2 – Exécuter un code VBA
Si vous avez saisi de nouveaux enregistrements dans une table Access à l’aide de Visual Basic Application (VBA), procédez comme suit pour réinitialiser le champ Numérotation automatique.
- Dans Access, cliquez sur l’onglet Créer, puis sur Module dans le groupe Macros et code.
Figure 8 – Sélection du module
- Tapez maintenant le code ci-dessous dans l’éditeur Visual Basic.
Sub ResetAuto()
Dim iMaxID As Long
Dim sqlFixID As String
iMaxID = DMax(“”, “”) + 1
sqlFixID = “ALTER TABLE ALTER COLUMN COUNTER(” & & “,1)”
DoCmd.RunSQL sqlFixID
End Sub
Figure 9 – Code pour réinitialiser le champ NuméroAuto
- Cliquez sur Run pour exécuter le code ci-dessus.
Figure 10 – Option d’exécution
Ouvrez la table et essayez d’insérer un nouvel enregistrement. Si cela ne résout pas l’erreur d’exécution 3022, il se peut que la table soit corrompue. Utilisez le logiciel Stellar Repair for Access pour réparer votre base de données et récupérer ses objets, comme la table, les enregistrements supprimés, les formulaires, les modules, etc.
Conclusion
Vous pouvez rencontrer l’erreur 3022 de la base de données Access lorsque vous tentez de saisir un nouvel enregistrement dans un champ Numéro automatique. L’erreur peut également se produire lors de l’ouverture d’un formulaire ou d’un fichier de base de données. Assurez-vous de comprendre la cause de cette erreur avant de mettre en œuvre les solutions présentées dans ce blog. Si vous ne pouvez pas accéder au fichier de base de données, utilisez le logiciel Stellar Repair for Access pour restaurer la base de données et ses objets.