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

Langage C++ Discussion :

Barre de Progression - Requête SQL


Sujet :

Langage C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 40
    Par défaut Barre de Progression - Requête SQL
    Bonjour,
    J'execute une requête SQL dbExpress avec Oracle qui dure relativement longtemps. Pour faire patienter l'utilisateur qui peut alors avoir tendance à cliquer n'importe où croyant que le processus est bloqué, j'ai déposé un composant ProgressBar qui devrait évoluer en même temps que le traitement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    		for (qPatients->First();!qPatients->Eof;qPatients->Next()) {
    			pbPatients->Position++;
    			pbPatients->Repaint();
    			TfrDispense *item=new TfrDispense(sbPatients);
    			item->Parent=sbPatients;
    			item->Name="patients"+String(lig);
    			item->Top=lig; item->Left=0;
    			item->Width=1020; item->Height=26;
    			item->IdPat=qPatients->FieldByName("ID_PAT")->AsInteger;
    			item->IdPresc=qPatients->FieldByName("ID_PRESC")->AsInteger;
    			item->IdMedic=qPatients->FieldByName("ID_MEDIC")->AsInteger;
    Malheureusement au bout de quelques secondes tout se fige y compris ma barre de progression (pbPatients) et le caption de la fenêtre indique même Ne répond pas).
    Quelqu'un aurait une idée ? J'ai essayé avec un Timer alors là c'est encore mieux il n'y va pas du tout pendant le traitement.

    Merci d'avance de vos réponses.

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    Je ne suis pas sûr que tu aies posé la question au bon endroit...ce n'est pas tellement du "langage C++", c'est plutôt lié à l'utilisation d'un framework.
    Je ne connais pas à vrai dire dbExpress, mais mon intuition à voir le code que tu montres est que si la requête est longue à s'exécuter côté serveur SQL, alors ton code qui s'exécute côté client, barre de progression y compris, ne peut que marquer la pause en attendant que le serveur SQL réponde...

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Une application Windows est considérée comme "ne répond pas" si elle n'a pas traité les événements (mouvement de souris, etc.) depuis cinq secondes.

    Si tu veux que ton UI reste responsive, tu peux faire ta requête dans un thread séparé, et faire des appels inter-thread pour mettre à jour l'UI (mais ne sachant pas quel framework tu utilises, je ne sais pas ce qu'il permet ou non de ce côté).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2010
    Messages
    734
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 734
    Par défaut
    medinoc te donne la solution pour que ton application ne soit pas marquée "Ne réponds pas" par windows. Par ailleurs, si tu veux faire patienter avec une animation pendant le traitement de la requête par le serveur oracle , il faut que tu la rende indépendante du résultat, sinon elle va forcément figer en attendant la réponse du serveur...elle ne peut pas inventer les résultats avant qu'ils arrivent...

Discussions similaires

  1. barre de progression et requête SQL
    Par melancolie dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 27/04/2011, 00h03
  2. BARRE DE PROGRESSION AVEC CODE PL/sql
    Par Bayoro dans le forum PL/SQL
    Réponses: 1
    Dernier message: 19/10/2007, 14h58
  3. Réponses: 8
    Dernier message: 13/07/2007, 12h19
  4. [VBA-A]paramétrer une barre de progression sur une requête
    Par jeronimo dans le forum VBA Access
    Réponses: 3
    Dernier message: 06/02/2006, 20h38
  5. Barre de progression sur une requète SQL
    Par Wilco dans le forum Bases de données
    Réponses: 4
    Dernier message: 28/04/2005, 14h20

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