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

Développement SQL Server Discussion :

Best practice en terme de gestion des erreurs pour une connexion et requête ADODB


Sujet :

Développement SQL Server

  1. #1
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut Best practice en terme de gestion des erreurs pour une connexion et requête ADODB
    Bonjour,

    Jusqu'à présent, je développais une appli VBA sans me casser pas trop la tête sur la gestion des erreurs ADODB, ce qui est une grave erreur ...
    Je suis donc en train de retravailler mes modules pour en tenir compte désormais.

    Première question : jusqu'à présent, hormis un ou deux formules qui utilise un recordset au niveau formulaire, une connexion ADODB était créée à chaque requête SQL. A priori ce serait la bonne approche (Comprendre les recordsets ADO)
    Intuitivement, j'aurais pensé le contraire, que le fait de maintenir une connexion était moins coûteux que d'en créer une à chaque fois.
    Quel est votre avis sur le sujet ?


    Ensuite mon appli sera utilisée en client serveur séparé, donc avec communication réseau ... qui pourra notamment se faire en wifi. Donc il n'est pas déconnant de prévoir une communication de mauvaise qualité.

    Je me propose donc de gérer d'éventuelle erreur de connexion à chaque fois que j'en ouvre une, avec une gestion dans ce goût là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    On Local Error Resume Next
    Cn1.Open FN_CHAINESQL()
    If Cn1.State <> 1 Then
        On Error GoTo 0
        v_tmp1 = "La base de données n'est pas joignable : ce formulaire ne peut fonctionner qu'en mode connecté !"
        MsgBox v_tmp1, vbCritical
        c_msg = "Base de données injoignable"
        c_msg.ForeColor = 255
        Set Cn1 = Nothing
        Exit Sub
    End If
    On Error GoTo 0

    Ensuite je ne suis pas à l'abri qu'une requête SQL ne plante pas. Donc je verrai bien également ce type de gestion pour les recordsets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    On Local Error Resume Next
    Rq1.Open ChSQL, Cn1, adOpenStatic, adLockOptimistic
    If Rq1.State = 0 Then
        On Error GoTo 0
        v_tmp1 = "Erreur de communication avec le serveur ou avec la requête SQL : Veuillez vérifier votre connexion réseau et réouvrir le formulaire, ou contacter l'administrateur si le problème persiste !"
        MsgBox v_tmp1, vbCritical
        c_msg = "Erreur avec le serveur et la requête SQL !!!!"
        c_msg.ForeColor = 255
        DoCmd.Hourglass False
        Set Rq1 = Empty
        Set Cn1 = Empty
        Exit Sub
    End If
    On Error GoTo 0

    Il faudrait également que je traite les cas où j'utilise un recordset de type adOpenForwardOnly, utilisé pour traiter des boucles qui peuvent être longues. Or il n'est pas dit qu'une erreur ne se produise pas au milieu de la boucle. Pour ce cas de figure, je pense qu'un classique On Error GOTO .... suffirait.
    Encore qu'il serait bien de déterminer si le pb vient de la connexion ou de la requête.

    Et bien sûr bien fermer et libérer les connexions et recordsets après usage.

    Voilà pour les quelques idées que j'avais en-tête.
    Merci d'avance pour vos critiques, vos retours d'expérience et vos préconisations.

  2. #2
    Membre expert
    Avatar de mail.spam
    Homme Profil pro
    Développeur Windev et technicien maintenance
    Inscrit en
    Janvier 2008
    Messages
    1 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Windev et technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 1 914
    Points : 3 803
    Points
    3 803
    Par défaut
    Bonjour,

    Pour moi tu devrait plutôt poser ta question sur le forum Visual basic.
    Car cela concerne plus la gestion des erreurs à partir de ton programme.
    Tu devrait aussi avoir plus de retour d'expérience sur la gestion ADODB
    la touche est ton amie. l'aide ne mord pas quand on la consulte...
    PS : n'oubliez jamais que nous ne sommes pas avec vous sur le projet. Donc plus vous donnez d'informations et d'exemples de codes et plus nous pourrons vous aider. (Un exemple vaut mieux que de longs discours...)

    Pensez à utiliser les votes et à cliquer sur , merci

  3. #3
    FMJ
    FMJ est déconnecté
    Membre averti
    Profil pro
    tutu
    Inscrit en
    Octobre 2003
    Messages
    416
    Détails du profil
    Informations personnelles :
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : tutu

    Informations forums :
    Inscription : Octobre 2003
    Messages : 416
    Points : 356
    Points
    356
    Par défaut
    Bonjour

    Effectivement, je me suis trompé de crèmerie en postant ! Merci !

Discussions similaires

  1. [2008] Gestion des erreurs pour une source Excel
    Par phenomeno dans le forum SSIS
    Réponses: 1
    Dernier message: 06/04/2011, 14h45
  2. Gestion des erreurs sur une commande multiple
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 05/10/2006, 15h03
  3. Réponses: 6
    Dernier message: 09/06/2006, 12h17
  4. [J2EE/JSP] Gestion des erreurs avec une base SQL server 2005
    Par critok dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 30/04/2006, 16h57
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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