Avez-vous déjà eu un numéro d'erreur d'accès, mais pas le message d'erreur qui explique de quoi il s'agit ?
Le AccessError()
est un moyen rapide d'obtenir le message d'erreur associé à un numéro d'erreur d'accès :
Le caractère d'espace réservé du tuyau
Le caractère pipe (|
) est une barre verticale (disponible via [Shift] + [\] {backslash} sur un clavier anglais).
La fonction AccessError utilise ce caractère comme espace réservé pour le texte spécifique à l'instance dans un message d'erreur.
Par exemple, l'erreur d'accès 3211 est "... impossible de verrouiller la table '|' ..." Le caractère pipe dans le message générique est remplacé par la chaîne réelle qui a été utilisée dans la ligne de code qui a généré le message d'erreur :
Documentation officielle
La fonction AccessError est en fait une méthode de l'objet Access.Application. Voici une description de ce qu'il fait à partir de la documentation officielle :
Vous pouvez utiliser AccessError pour renvoyer la chaîne descriptive associée à une erreur Microsoft Access ou Data Access Objects (DAO).
Il convient de noter qu'il s'agit d'un Microsoft Accès spécifique une fonction. En d'autres termes, vous ne pourrez pas l'appeler à partir d'une autre application Office, comme Excel ou Word.*
(* Ce n'est pas techniquement vrai. Vous pouvez créer un objet Access Application via COM dans n'importe quel environnement VBA, puis être en mesure d'appeler la méthode AccessError à partir de cet objet. Bien sûr, cela ne serait utile que si vous vouliez vérifier Chaînes de messages d'erreur spécifiques à l'accès dans cette autre application Office, ce qui semble peu probable.)
Cas d'utilisation
Honnêtement, je ne me souviens pas avoir utilisé cette méthode dans le code de mon application.
Il s'agit d'une fonctionnalité que j'utilise presque exclusivement à partir de la fenêtre Exécution lorsque je souhaite simplement déterminer rapidement ce que représente un numéro d'erreur d'accès.
Cela serait très utile si vous rencontriez un gestionnaire d'erreurs qui avait un Select Case Err.Number
bloc et tous les Case
individuels les instructions utilisaient des nombres sans commentaires, comme ceci :
Select Case Err.Number
Case 2452
'Do something
Case 2455
'Do a different thing
Case 2467
'Do something else
End Select
Armé de la méthode AccessError, vous pouvez améliorer ce code en ajoutant un commentaire avec une brève description de chaque numéro d'erreur :
Select Case Err.Number
Case 2452 'invalid reference to the Parent property
'Do something
Case 2455 'invalid reference to the property
'Do a different thing
Case 2467 'expr refers to object that is closed or doesn't exist
'Do something else
End Select
Considérations sur l'intégration de la base de données de bogues
Si vous utilisez une base de données de bogues, comme FogBugz, qui offre une fonctionnalité pour regrouper les erreurs en fonction de leur description, vous pouvez utiliser le générique message d'erreur dans l'objet du rapport de bogue (ou n'importe quel champ faisant le regroupement) et capturez le spécifique message d'erreur dans le champ de détail de l'événement de bogue.
Je discute de ce problème dans le contexte de ma fonction de génération d'erreurs personnalisée ici :Génération d'erreurs dans VBA :problèmes d'intégration de la base de données de bogues.