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

VB 6 et antérieur Discussion :

Refresh DbGrid trop lent ?


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de vincent magnin
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 209
    Par défaut Refresh DbGrid trop lent ?
    Je suis en train de développer une application (sous VB5 =/ ) de gestion des besoins de formation pour mon entreprise, mais je me heurte à un problème vraiment pénible.

    J'utilise une dbgrid qui affiche deux champs (de deux tables différentes) connectée à un contrôle data.

    J'arrive sans problèmes à mettre à jour les données dans la base de données mais ces modifications ne s'affichent dans la dbgrid que si je change de page et reviens dessus.
    Le système fonctionne également lorsque j'éxecute le compilateur en mode pas-à-pas ... ce qui indique bien que mon code marche, pourtant la mise à jour du dbgrid ne se fait pas en éxecution normale... ce qui me pousse à me demander si ces refresh ne prennent pas une certaine durée car je trouve extrêmement bizzare le fait que tout fonctionne normalement en pas-à-pas.



    J'ai tenté avec les propriétés et méthodes : .refresh, .recordset.requery, .updaterecords... mais rien n'y fit

    un petit aperçu du code :.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    (Dbg_NvoRang  <= dbGrid)
    (DonneesRang <= Data)
    
        SQL2 = "Select Agents.NomAgent,Rangs.NomRang From Agents,Rangs Where Agents.NumRang=Rangs.NumRang And Agents.NumNiveau=" + Str(Me.Txt_NumNiveau.Text) + " And Agents.NumSecteur=" + Str(Me.Txt_NumGroupe.Text) + ";"
        
        parametre_data SQL2 'appele la procédure initialisant le contrôle data mais normalement inutile puisque le data a déjà été initialisé
        Me.Dbg_NvoRang.Refresh
        Me.DonneesRang.UpdateControls
        Me.DonneesRang.Refresh
        
        Me.Cbx_NvoRang.Text = ""
        Me.Dbg_NvoRang.ClearFields
        Me.Dbg_NvoRang.ReBind
    Si quelqu'un peut me prêter main forte ça ne sera pas de refus =)

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Salut

    La propriété AutoRedraw de la Form est-elle à True ?

  3. #3
    Membre expérimenté
    Avatar de vincent magnin
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 209
    Par défaut
    Non elle ne l'étais pas, mais en changeant ça ne change rien.
    De plus, je me suis aperçu d'une chose, la dbGrid se met donc à jour quand je change de page, quand j'execute le projet en pas à pas, mais également quand je tente de faire les modifications plusieurs fois de suite.
    J'ai crée un évènement sur clic sur le formulaire, et la dbgrid se met à jour après plusieurs (voire de nombreux clics).

    J'ai même mis une boucle "while" qui boucle tant que le champ que j'ai voulu modifier n'est pas changé par le refresh de la dbgrid ...
    Je trouve cette partie un peu "bourrine" mais ça fonctionne à peu près puisque la dbgrid se refresh à peu près au 5eme passage dans la boucle, mais continue de boucler sans arrêt ce qui pose un lèger souci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
            
    Me.Dbg_NvoRang.Col = 1
    While Me.Dbg_NvoRang.Text <> nomrang 'qui est le nouveau nom du rang
         Me.DonneesRang.Refresh
         DoEvents
    Wend

    Grosso modo la dbGrid se met à jour normalement qu'une fois sur quatre lorsque je lance un quelconque évènement ... je suis complètement perdu =(

  4. #4
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Désolée, je travaille peu avec les DataGrid (ou DBGrid... ), alors je n'ai pas d'idées pour le moment. Je passe la main.

    Bonne chance.

  5. #5
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Par défaut
    Je ne vois que 2 raisons possibles :
    - la 1ère est que tu ne laisses pas au système le temps dont il a besoin (un doevents serait le bienvenu juste après l'exécution d'une requête)
    - la 2ème est que ton code comporte des erreurs et que tu les a "sautées" par un "on Error Resume Next"...sans réelle gestion d'erreur... moyennant quoi ton code continue... mais sans données !

  6. #6
    Membre expérimenté
    Avatar de vincent magnin
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2006
    Messages : 209
    Par défaut
    La seconde possibilité n'est pas en cause puisque je n'ai pas sauté d'erreurs.
    Par contre, j'envisageai déjà que ce soit une lenteur systeme qui cause le problème, j'ai donc, grâce à tes conseils, posé des "DoEvents" toutes les deux lignes (enfin, celles qui sont utiles au data) mais malheureusement ça ne change rien.

    Je me demande donc si ce n'est pas une lenteur d'accès à la base de données (ou de mise à jour) dûe au protocole lui-même (il doit bien y avoir un temps de latence, si oui me reseigner me permettrait de pourvoir gérer le problème) ou à la vitesse du réseau (car la bdd est à distance) ... et dans ce cas j'ai peur que mon problème soit insoluble sauf avec mon dépannage à la Mac Gyver (cf while).

Discussions similaires

  1. Convolution trop lente...
    Par progfou dans le forum Traitement d'images
    Réponses: 6
    Dernier message: 05/08/2006, 11h44
  2. [Eclipse] Editeur de code trop lent
    Par Benzeghiba dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 10/11/2005, 14h02
  3. boucle while trop lente
    Par atouze dans le forum Access
    Réponses: 17
    Dernier message: 15/06/2005, 16h35
  4. [SAGE] ODBC trop lent
    Par tileffeleauzed dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 14/11/2004, 09h56
  5. Envoi de mail trop lent
    Par MASSAKA dans le forum ASP
    Réponses: 3
    Dernier message: 15/10/2004, 10h57

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