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

 Delphi Discussion :

probleme avec la vitesse du calcul


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut probleme avec la vitesse du calcul
    salut
    jai une table paradox qui contient comme champs(nom,date,prix_unit,poid);
    jai un label qui va afficher le total de tout les montant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    table1.first;
    s:=0;
    while not table1.eof do
    begin
    s:=s+table1.(fieldvalues['prix_unit']*table1.fieldvaluies['poid']);
    table1.next;
    et finalement ce total sera afficher dans un label.
    mon probleme est au moment de calcul tu te sent que ton programme plante
    car jai nombre elver d'enregistrement.
    est ce qu'il ya une solution dans le kel je peut eviter ce probleme est et ce que la mauvaise configuration du pc(vitesse du processeur,la ram) r'entre dans ce probleme.
    merci

  2. #2
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 96
    Points : 76
    Points
    76
    Par défaut
    Bonjour,

    Pourquoi ne fais tu pas le calcul dans ta requete ?

  3. #3
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    re
    mais jai pas comprie bien ta reponce.
    merci

  4. #4
    Membre régulier
    Homme Profil pro
    Inscrit en
    Février 2007
    Messages
    96
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 96
    Points : 76
    Points
    76
    Par défaut
    je suppose que pour lire ta table, il y a un select * from table qui est fait.

    pourquoi ne fais tu pas plutot un
    select sum(prix_unit*poid) from table. Cela doit etre possible en paradox

  5. #5
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    re
    est ce que si je utilise des requete sql la vitesse de calcul sera augmenter.
    merci

  6. #6
    Membre régulier
    Homme Profil pro
    agent de fisc(les impots)
    Inscrit en
    Juillet 2006
    Messages
    427
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : agent de fisc(les impots)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 427
    Points : 111
    Points
    111
    Par défaut
    re
    jai esseyé ta requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    query1.sql.add('select sum(prix_unit*poid) from matable');
    mais mon probleme comment je puisse affecter le resultas de cette requete dans un label.caption.
    merci

  7. #7
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par kroma23 Voir le message
    re
    est ce que si je utilise des requete sql la vitesse de calcul sera augmenter.
    merci
    Si tu travaillais avec un vrai SGBD, la réponse serait oui.
    Mais avec Paradox, j'ai bien peur que non. J'imagine que tu dois aussi utiliser le BDE.
    Avec BDE+Paradox, la manipulation directe des tables est plus rapide que les requêtes SQL.

    Par contre, tu peux améliorer les performances en définissant des variables pour accéder directement au TField au début de la boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
      PrixUnit, Poid : TField;
      s : double;
    begin
      PrixUnit := table1.FieldByName('prix_unit');
      Poid := table1.FieldByName('poid');
      Table1.First;
      s := 0;
      while not Table1.eof do
      begin
        s := s + PrixUnit.AsFloat * Poid.AsFloat;
        Table1.Next;
      end;
    De cette façon, tu évites que le TTable doivent rechercher le TField correspondant à chaque lecture du champ.
    De plus en passant par AsFloat, tu évites de faire les calculs sur des variants qui vont encore ralentir le traitement.

    Ensuite, si tu peux te le permettre, tu peux aussi essayer de passer la table en accès exclusif (ce qui interdira à tout autre utilisateur de la lire en même temps). Ca permet au BDE se s'affranchir d'une partie de la gestion des verrous et ça permet d'accélérer un peu les performances de lecture de la table.

Discussions similaires

  1. Probleme avec une fonction de calcul d'un age
    Par dondano dans le forum Langage
    Réponses: 1
    Dernier message: 27/04/2007, 11h50
  2. [VB6+Base Access]probleme avec des dates calculées
    Par jam92400 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 18/01/2007, 18h26
  3. probleme avec un programme en JS qui realise des calculs
    Par leclone dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 17/09/2006, 18h09
  4. probleme avec le calcul des heures
    Par aibar dans le forum Access
    Réponses: 1
    Dernier message: 14/06/2006, 00h38
  5. probleme avec des calculs et une requete de mise a jour
    Par el_quincho dans le forum Access
    Réponses: 2
    Dernier message: 16/03/2006, 10h06

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