IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

"Catcher" un message d'erreur ODBC


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut "Catcher" un message d'erreur ODBC
    Bonjour à tous,

    J'ai essayé de chercher une solution à mon problème sur vos forums, sans succès. Désolé donc si cela déjà été traité, mais j'avoue que j'ai aussi de la peine à bien formuler mon problème.

    En fait j'ai une application Access 2003 basée sur une base de données Oracle. L'application utilise donc des tables liées. Dans un des modules de cette application, les utilisateurs peuvent gérer un historique pour des usines. Ils choisissent ainsi une société pour une période donnée (valide de... à...).

    Afin d'éviter que les utilisateurs insèrent des périodes erronées (de 2007 à 2001 par exemple), un trigger a été mis en place du côté Oracle lorsqu'une période est ajoutée ou mise à jour. Ce trigger retourne un message d'erreur dans le cas où la période est erronée.

    Le problème est que, même si le trigger fonctionne à merveille, le message d'erreur retourné par Access n'est pas vraiment "user-friendly":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (p.ex. "ODBC -- update on a linked table failed..."
    Y a-t-il un moyen de "catcher" (désolé je trouve plus le terme équivalent - s'il existe - en français) ce message d'erreur et d'en faire quelque chose de plus "propre" ? J'ai essayé d'utiliser les événements "BeforeUpdate" et "BeforeInsert", mais le message ODBC vient apparemment juste après la fin de ces événements.

    Merci beaucoup d'avoir pris le temps de me lire, et merci d'avance pour vos réponse

  2. #2
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Bonjour,

    Regarde l'instruction "on error"

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Citation Envoyé par pc75 Voir le message
    Regarde l'instruction "on error"
    Vi je connais cette instruction Le problème c'est de savoir à quel moment l'utiliser...

    Je l'avais placé dans le "BeforeUpdate" en tentant de capturer l'erreur ODBC (3152 sauf erreur), mais celle-ci n'apparaît qu'après la fin de l'événement

  4. #4
    Membre Expert
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Par défaut
    Re,

    Tu as quand même la solution de controler la validité des dates AVANT d'exécuter ta requête non ?

  5. #5
    Expert confirmé
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Par défaut
    Bonjour,

    Les messages d'erreur ODBC peuvent être récupérés dans la collection DBEngine.Errors

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Dim errX As DAO.Error, strErrMsg As String
     
    On Error GoTo ERRH
     
     
    ' ..... code .........
     
     
    QUIT:
    Exit Sub ' ou Exit Function
     
    ERRH:
    strErrMsg = "Erreur N° " & CStr(Err.Number) & " : " & Err.Description
    Select Case Err.Number
        ' principaux codes d'erreurs impliquant ODBC
        Case 3146, 3151, 3154, 3155, 3156, 3157, 3231, 3232, 3234, 3225, 3238, 3247, 3254
            strErrMsg = strErrMsg & vbCrLf & vbCrLf & _
               ">>> Erreurs complémentaires DAO :" & vbCrLf & _
               "======================"
            'Récupération Erreur(s) driver ODBC via DAO
            For Each errX In DBEngine.Errors
                strErrMsg = strErrMsg & vbCrLf & Format(errX.Number, "00000") & " : " & errX.Description
            Next
    End Select
    MsgBox strErrMsg
     
    Resume QUIT
    Ça se fait donc en deux temps.
    1. On intercepte l'erreur de l'objet Err
    2. On parcours la collection DBEngine.Errors
    Attention : je crois que ça ne fonctionne pas en mode pas à pas.

    A+

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 15
    Par défaut
    Bonjour,

    Merci pour cette réponse ! J'ai appris quelque chose avec le "DBEngine.Errors"

    Par contre j'ai finalement utilisé l'événement "Form_Error" pour attraper les erreurs Oracle. Cela fonctionne très bien !

    Sujet résolu en ce qui me concerne. Merci encore pour votre aide !

    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ODBC] message d'erreur odbc
    Par cdevl32 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/04/2009, 18h57
  2. [Jdbc Odbc][Applet]Message d'erreur
    Par Jean Claude90 dans le forum JDBC
    Réponses: 4
    Dernier message: 31/10/2005, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo