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

Requêtes et SQL. Discussion :

[requete] - Renvoyer l'erreur d'une requête ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut [requete] - Renvoyer l'erreur d'une requête ?
    Bonjour,

    J'ai une question concernant les requêtes Access. Voilà dans mon appli je créais des formulaire qui appels les requêtes comme expliqué dans la FAQ :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DAO.BeginTrans
      'référence à la requête 
    Set qdf = CurrentDb.QueryDefs("NomQuery") 
     
      'code qui utilise qdf 
      'par exemple 
    qdf.Parameters("NomParamètre") = valeur     '<== si requête paramétrée 
    qdf.Execute
    DAO.CommitTrans
    'Gestion d'erreurs
    DAO.Rollback
    ça marche quand l'utilisateur saisie des données corrects mais imaginons qu'il oublie de saisir un champ ou qu'il saisit une données texte au lieu de numéric. Là ma requête s'éxecute, aucun message d'erreur ne m'est renvoyé et pourtant rien n'a été ajouté dans la table !!
    et en effet, si j'execute ma requete directement via access je saisie des données erronées : j'ai une erreur de style : "violation de clée".

    Pourquoi cette erreur ne m'est pas retournée lorsque j'execute ma requete via VBA ? et surtout comment faire en sorte qu'il retourne cette erreur ?!

    Merci d'avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Points : 1 166
    Points
    1 166
    Par défaut
    Dans ce cas la, il vaut mieux valider les données avant de lancer la requête, me semble t il!
    Pour un champ texte: vérifier que la chaine saisie est différente de chaine nulle.
    Pour un champ numérique: s'il est déclaré comme numérique (propriété Format), si l'utiisateur saisi du texte, il aura un message d'erreur.

    Et en plus, si tu fais un commitrans, suivi d'un rollback, ben en fait tu fais rien du tout puisque le rollback c'est pas de la gestion d'erreur mais permet de revenir à l'état précédent la transaction!

  3. #3
    Membre régulier Avatar de Anto03
    Inscrit en
    Octobre 2005
    Messages
    155
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 155
    Points : 87
    Points
    87
    Par défaut
    Je valide déjà les données avant l'insertion mais imaginons que je n'ai pas prévu un cas et....

    Mais ce n'est pas grave j'ai trouvé la solution
    il suffit d'ajouter l'option "dbFailOnError" à la fontion Execute. Ce qui génère une exception en cas d'erreur.
    Voici le code pour ceux que ça intéresse :

    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
     
    On Error GoTo erreur
        Dim Requete As DAO.QueryDef
     
        Set Requete = CurrentDb.QueryDefs("requete")
     
        DAO.BeginTrans
     
        Requete.Parameters("@Equipe") = TexteEquipe.Value
        Requete.Parameters("@Jour") = TexteJour.Value
        Requete.Execute (dbFailOnError)  
     
        DAO.CommitTrans
        MsgBox "ajouté !", vbInformation
    Exit Sub
    erreur:
        DAO.Rollback
        MsgBox "Erreur numéro " & Err.Number & " : " & Err.Description, vbCritical
    End Sub
    Merci quand même pour ta réponse Philippe.

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

Discussions similaires

  1. [Requete] Erreur pour une requête créée en plusieurs fois
    Par soforever dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 09/05/2007, 17h30
  2. [MySQL] Erreur dans une requête sql
    Par Goundy dans le forum PHP & Base de données
    Réponses: 37
    Dernier message: 30/01/2006, 17h08
  3. Réponses: 1
    Dernier message: 29/09/2005, 13h05
  4. [VBA] Erreur dans une requête
    Par Damsou dans le forum Access
    Réponses: 31
    Dernier message: 21/06/2005, 18h04
  5. Réponses: 8
    Dernier message: 01/03/2005, 17h01

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