Access
 sql >> Base de données >  >> RDS >> Access

Accéder à la recherche de message de numéro d'erreur

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.

Articles référencés

Lancer des erreurs dans VBAIntroduction d'une alternative sans friction à Err.Raise. Plus définiMike Wolfe