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

Bases de données Delphi Discussion :

Lenteur Du DataSet


Sujet :

Bases de données Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut Lenteur Du DataSet
    Bonjour à tous,

    Dans mon Application (Delphi + Firebird 2) j'utilise des Tquery pour mes requêtes mais il se trouve que comme je gère un grand nombre de données (environ 1500) c'est pas très agréable pour l'utilisateur de voir le chargement des données dans mon DBGrid.
    Un exemple simple est que je souhaites Compter le nombre d'enregistrements d' une requête et aussi faire des calculs sur deux colonnes (Montant et Quantité).
    Le problème est que les lignes apparaissent très lentement.

    Mon code que j' écrit dans le AfterOpen de mon IBQuery est le suivant
    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
    procedure TFenVueCommande.CommandSetAfterOpen(DataSet: TDataSet);
    var j,k : Integer;
    begin
       j:=0;
       k:=0;
      while not CommandSet.Eof do
       begin
        j:=j+(StrToInt(CommandSetNBPIECECOM.Text)); // somme des Qtité
       k:=k+(StrToInt(CommandSetMONTCOM.Text));    // somme du montant 
      CommandSet.Next;
     end;
    edit5.Text:=IntToStr(CommandSet.RecordCount);// Nombre de lignes
    edit6.Text:=IntToStr(j);
    edit7.Text:=IntToStr(k);
    end;
    Merci par avance pour votre aide.

  2. #2
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    note:ne jamai faire de calcul dans un événément de afteropen
    si ta des champs à calculé, les mettres dans oncalcfield,
    2-pour tes calcul là, soit u utilise les champs aggrégat avec TClientDataset, ou simplment et plus pratique et rapide une requet
    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
    20
    21
    22
    23
     
    Procedure TMaForm.calculer;
    var 
         query:TIBSQL;
         nbr:integer
         qte:single;
         som:currency;
    begin
         query:=TIBSQL.Create(nil);
         try
           query.Database:=IBDatabase1;
           query.SQL.Text:='select count(*),sum(NBPIECECOM),sum(MONTCOM) from matable';
           query.ExecQuery;
           nbr:=query.fields[0].value;
           qte:=query.fields[1].value;
           som:=query.fields[2].values;      
           IBTransaction1.CommitRetaining;
         finally
           query.Free;
         end;
    ......
     
    end;
    edit: avec les dbgrid, n'oublie pas d'utilisé TIBQuery.disablecontrol et enablecontrol (quant tu ouvre une table, faire une recherche dans une boucle,....) sa réduit le rafraichissement des controls BD
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2007
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Merci pour ta réponse je vais la tester. en fait ma requête utilise plusieurs paramètre donc j'avais opté pour l'utilisation du OnCalcFields mais ça ne marche pas ça m'affiche 0 dans tous les champs.
    Je teste la 2ème proposition !

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/12/2010, 14h31
  2. Réponses: 3
    Dernier message: 01/09/2009, 15h15
  3. [VC# NET 2.0] - DataSet - ReadXML - Lenteur
    Par Anified dans le forum C#
    Réponses: 12
    Dernier message: 08/11/2007, 01h41
  4. [Sybase]probleme de lenteur
    Par MASSAKA dans le forum Sybase
    Réponses: 3
    Dernier message: 19/03/2003, 22h58
  5. Lenteur d'execution de Jbuilder 6
    Par Tsimplice dans le forum JBuilder
    Réponses: 6
    Dernier message: 18/12/2002, 14h41

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