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 Delphi Discussion :

ProgressBar requête sql


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut ProgressBar requête sql
    Bonjour à tous,

    Je veux faire fonctionner un ProgressBar en même temps que la progression de la requête sql. Mais quand je j'exécute la ProgressBar ne suis pas le pas de la boucle, elle va se remplie automatiquement quand je clique sur le bouton, alors que le traitement se poursuit. Voici mon 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
     
          Idx := 1;
          ProgressBar1.Max := Query_Excel.FieldCount-1;
          ProgressBar1.Position := 0;
          while not Query_Excel.Eof do
                begin
                  Inc(Idx);
                  for Cpt :=0 to Query_Excel.FieldCount-1 do
                  vWorksheet.cells.item[Idx, Cpt+1].value:=Query_Excel.Fields[Cpt].AsString;
                  Query_Excel.Next;
                  Application.ProcessMessages;
                  Label2.Caption := IntToStr(Idx) + ' ' + 'Abonnés.';
                  Progressbar1.Position := Progressbar1.Position + 1;
                end;
    Merci pour toute aide.

  2. #2
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Citation Envoyé par sondo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
          Idx := 1;
          ProgressBar1.Max := Query_Excel.FieldCount-1;
          ProgressBar1.Position := 0;
          while not Query_Excel.Eof do
                begin
                  Inc(Idx);
                  for Cpt :=0 to Query_Excel.FieldCount-1 do
                  vWorksheet.cells.item[Idx, Cpt+1].value:=Query_Excel.Fields[Cpt].AsString;
                  Query_Excel.Next;
                  Application.ProcessMessages;
                  Label2.Caption := IntToStr(Idx) + ' ' + 'Abonnés.';
                  Progressbar1.Position := Progressbar1.Position + 1;
                end;
    Merci pour toute aide.
    Salut,
    C'est normale vu que tu as utilisé FieldCount au lieu de RowCount ou RecordCount.
    Car supposons que tu as 10 champs ou colonne si tu veux, le step max doit être atteint après 10 boucles.
    A+

  3. #3
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    Salut Andry,

    J'ai fait avec RecordCount à la place de FieldCount, mais cela plante la requête. Cette requête exporte des données sous excel. Si j'utilise RecordCount, une seule ligne est exportée et le programme se plante impossible de l'arrêter si ce n'est avec Ctrl-Alt-Supr.

  4. #4
    Membre éprouvé
    Avatar de Andry
    Profil pro
    Informaticien
    Inscrit en
    Juillet 2002
    Messages
    1 164
    Détails du profil
    Informations personnelles :
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 164
    Par défaut
    Alors, c'est quoi le composant utilisé ?
    Sinon, pourquoi ne pas exécuter une requête pour compter d'abord le nombre d'enregistrement.

  5. #5
    Membre éclairé Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Par défaut
    La requête compte déjà le nombre d'enrégistrement par le moyen de la boucle. Le compteur Idx est incrémenter pour chaque ligne exporter dans excel.
    Faire une autre boucle qui compte le nombre d'enrégistrement va ralentir le traitement à mon idée, pourquoi ne pas le faire dans une seule boucle?.

  6. #6
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgressBar1.Max := Query_Excel.RecordCount-1;
    Ca ne corrige pas le problème ?

    Sinon, si tu fais un export excel, au lieu d'écrire cellule par cellule, pourquoi ne pas passer par un fichier texte ?
    Moi, depuis que je fais un export dans un fichier texte avec séparateur (genre csv) que j'ouvre avec excel, mon temps d'export est devenu quasi instantané.
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

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

Discussions similaires

  1. Requête SQL
    Par Leludo dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/07/2024, 15h41
  2. [ DB2 ] [ AS400] requête sql
    Par zinaif dans le forum DB2
    Réponses: 6
    Dernier message: 23/08/2008, 19h42
  3. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  4. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26
  5. PB requète SQL avec Interbase
    Par missllyss dans le forum InterBase
    Réponses: 2
    Dernier message: 15/07/2003, 11h37

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