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

WinDev Discussion :

lenteur excessive de l'execution de mon code!


Sujet :

WinDev

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut lenteur excessive de l'execution de mon code!
    bonjour,

    Mon code s'execute avec lenteuuuuuuuuuuuur pfffff.
    alors comment y remedier et pourquoi il est super lent?
    voici le 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    bRes est un booléen
    i est un entier
    i= 0
    sSql est une chaîne
    reqUpdate est une Source de Données
    reqTest est une Source de Données
    sSql="select id,proprio_adr1,proprio_adr2 from Bien where (bien_adresse2='' or bien_adresse2 is NULL) and (proprio_adr2 <>'' and proprio_adr2 is not NULL)"
    BTN_majAdr..Etat=Grisé
    Info(sSql)
    SI HExécuteRequêteSQL(reqTest,hModifieFichier,sSql) ALORS
    	Info("coucou")
    	HLitPremier(reqTest)
    	Info("salut")	
    	TANTQUE PAS HEnDehors(reqTest)
    		//info(reqTest.id)
    		// Traitement de l'enregistrement
    		sSql = "Update Bien SET bien_adresse1='"+ToFormat("",reqTest.proprio_adr1) +"' ,bien_adresse2='"+ToFormat("",reqTest.proprio_adr2) +"' where id="+reqTest.id
    		Info(sSql)
    		SI PAS HExécuteRequêteSQL(reqUpdate,hModifieFichier,sSql) ALORS
    			Erreur("Erreur Hyper File : " + HErreur())
    			Trace(sSql)
    		FIN
    		HLitSuivant(reqTest)
    		i +=1
    	FIN
    	//HFerme(reqUpdate)
    	//HAnnuleDéclaration(reqUpdate)
    	//HFerme(reqTest)
    	//HAnnuleDéclaration(reqTest)
    SINON
    	Erreur("Erreur Hyper File : " + HErreur())	
    FIN
    SI i > 0 ALORS
    	CBM_message = i + " Fichier(s) modifié(s)"
    SINON
    	Info("pas d'enregistrements à modifier")
    FIN
    BTN_majAdr..Etat=Actif
    la lenteur se traduit sur le code en vert

    par ailleurs, je voulais savoir si
    -HFerme(reqUpdate)
    -HAnnuleDéclaration(reqUpdate)
    doit se placer plutot dnas la boucle ou a la fin du code...?

    et pour
    //HFerme(reqTest)
    //HAnnuleDéclaration(reqTest)
    ils doivent etre utilisés du moment que HExécuteRequêteSQL est executé , meme si celui ci ne ramene pas d'enregistrement?

    nath

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Par défaut
    bonjour,
    as tu essayé cette requete directement au niveau du requeteur HF?
    toutes les conditions de ta requetes sont elles bien necessaires?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (bien_adresse2='' or bien_adresse2 is NULL) and (proprio_adr2 <>'' and proprio_adr2 is not NULL)
    la premiere requete vient juste lire le fichier donc deja tu peux enlever le hmodifiefichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SI HExécuteRequêteSQL(reqTest,hModifieFichier,sSql) ALORS
    Le hlitpremier rexecute la requete par defaut, il faudrait préciser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HLitPremier(reqTest, hSansrafraichir)
    comme cela la requete ne sera plus re_executée.
    Cela devrait déjà améliorer pas mal les choses !
    tiens nous au courant !

    voila!
    @+++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut
    c'est toujours la cata...
    ma table compte 25 000 enregistrement, c'est peut etre ca?
    j'ai fait ma requete avec l'editeur de requete de WD, mais cela ne change pas vraiment grd chose...beuh...

    sinon pour ma derniere question sur les hferme, une reponse?

    thanks!

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 28
    Par défaut
    les hferme n'ont pas d'incidences sur la rapidité d'execution de ta requete.
    Perso je place cela en fin de proccedure.
    et puis 25000 enreg, c'est pas la mère a boire.

    en combien de temps ta requete s'execute ?

    Par contre il est curieux que tu n'obtienne aucune amélioration vu que ta requete s'execute déja 2 fois :
    1 fois avec le hexexecuterequetesql
    1 fois avec le hlitpremier.
    en ayant mis le param Hsansrafraichir tu n'executes plus qu'1 fois...

    as tu demandé une optimasation de ta requete?
    peut être que la base n'a pas les clés necessaires
    @+++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    551
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2005
    Messages : 551
    Par défaut
    45 seconde... c'est enorme, non?
    et liberation de ressource(HAnnuleDéclaration) n'ont pas , non plus, d'incidence
    sur la rapidité d'execution du code de mon boutton?

    j'ai fait l'optimisatisation de requete, et il m'a suggere de mettre une cle avec doublon sur "proprio_adr2", je ne suis pas tres d'accord avec lui, si il y'a cle avec doublon a ajouter, il me semble plutot que ce serait sur "bien_adresse2"...

    la plupart du temps ce champs est renseigné, mais il peut arriver qu'il soit vide et dans ce cas, on veut mettre la valeur de "proprio_adr2", c'est pour cela que j'effectue ce traitement...

    et il m'a suggérer de faire une cle composite avec "bien_adresse2" et "proprio_adr2". mais je pense que cela vaut pas vraiment la peine d'ajouter une composite pour un traitement qui va etre effectué max, une fois par jour, non?

    Il me semble effectivement que 22 000 enregistrements soient pas vraiment bcp...


    peut etre qu'il ya eu une amelioration, mais bon, j'ai pas fait trop attention la differnece car 45 sc semble long, comme 1mn30..

  6. #6
    Membre éclairé
    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2002
    Messages
    488
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 488
    Par défaut
    N'hésite pas à utiliser les threads si jamais ton code est bloquant pour l'utilisateur... A manipuler avec précaution mais parfois très pratique

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

Discussions similaires

  1. probleme d'execution de mon code à cause d'un renvoie de variable.
    Par yorukaze dans le forum Général Python
    Réponses: 2
    Dernier message: 01/03/2008, 15h36
  2. Réponses: 3
    Dernier message: 31/07/2006, 15h07
  3. [VBA-E] Aide pour éxécuter mon code en cliquant sur un bouton dans excel.
    Par pauletta22 dans le forum Macros et VBA Excel
    Réponses: 53
    Dernier message: 29/05/2006, 13h47
  4. [FLASH MX2004] Rien ne se passe qd j'execute mon code
    Par adilou1981 dans le forum Flash
    Réponses: 2
    Dernier message: 27/07/2005, 23h31
  5. [Exécutable]puis je creer un executable a partir de mon code ?
    Par youpileouf dans le forum Général Java
    Réponses: 3
    Dernier message: 17/06/2005, 09h15

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