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 :

Temps d'exécution requête


Sujet :

WinDev

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut Temps d'exécution requête
    Bonjour

    comment peut-on améliorer un traitement comme celui la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    hexecuterequeteSQL(mareq,hdefaut,"SQL")
    hlitpremier(mareq)
    tantque pas hendhors(mareq)
    tableajouteligne(matable,code,libelle,fam,sfam,qte,prix)
    fin
    Nombre d'enregistrement 17000 enregistrements.

    ce traitement prend un temps énorme.

    je suis sur HyperFile C/S et je veux pas utiliser la tablefichier.

    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    si problème il y a, c'est sur ta requête ou sur ta base... Donne nous le code SQL de ta requête.

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Points : 2 579
    Points
    2 579
    Par défaut
    Citation Envoyé par ecoinfo Voir le message
    Bonjour

    comment peut-on améliorer un traitement comme celui la

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    hexecuterequeteSQL(mareq,hdefaut,"SQL")
    hlitpremier(mareq)
    tantque pas hendhors(mareq)
    tableajouteligne(matable,code,libelle,fam,sfam,qte,prix)
    fin
    Nombre d'enregistrement 17000 enregistrements.

    ce traitement prend un temps énorme.

    je suis sur HyperFile C/S et je veux pas utiliser la tablefichier.

    Merci d'avance.
    Sans HLitSuivant dans la boucle, ça peut durer longtemps

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    aïe bien joué vmolines! Pas trop réveillé moi ce matin...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut
    Bonjour

    voila le code de ma requete

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    TableSupprimeTout(TableEntete)
    SI PAS HExécuteRequête(REQ_ListeBL,hDéfaut) ALORS
    	Erreur ( "Erreur d' initialisation de la requête REQ_ListeBL" + RC + HErreurInfo ())
    	RETOUR	
    FIN
     
    HLitPremier(REQ_ListeBL)
    TANTQUE PAS HEnDehors(REQ_ListeBL)
    	TableAjouteLigne(FenBonLivraison.TableEntete,REQ_ListeBL.nbl,REQ_ListeBL.date,REQ_ListeBL.coclient,REQ_ListeBL.rs,REQ_ListeBL.CodeUser,REQ_ListeBL.ttc,REQ_ListeBL.mtregle,REQ_ListeBL.valide,REQ_ListeBL.nfact,REQ_ListeBL.livreur)
    	HLitSuivant(REQ_ListeBL)
    FIN
    TableSelectPlus(TableEntete,TableOccurrence(TableEntete))
    Merci d'avance.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Je parlais du code de ta requête SQL REQ_ListeBL (type SELECT ...). Il peut y avoir beaucoup de jointures sur des éléments non clés.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut
    Bonjour

    L’exécution de la requête se fait en un clic, c'est le parcours et l'ajout sur la table qui prend du temps !


    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
     
     
    SELECT 
      Bonlivra.nbl AS nbl,  
      Bonlivra.date AS date,  
      Bonlivra.coclient AS coclient,  
      Bonlivra.CodeUser AS CodeUser,  
      Bonlivra.ttc AS ttc,  
      Bonlivra.nfact AS nfact,  
      Bonlivra.valide AS valide,  
      Bonlivra.mtregle AS mtregle,  
      Bonlivra.livreur AS livreur,  
      Bonlivra.rs AS rs
    FROM 
      Bonlivra
    ORDER BY 
      nbl ASC

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    ah en effet il ne peut pas y avoir + simple comme requête! Quand tu l'exécute via WDSQL tu as les mêmes temps de réponse?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut
    ca passe super via WDSQL

    Remarque : j'exécute ma requête à l'initialisation de la fenêtre.

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Ok donc ça vient du code. Quand tu passes en debug entre ton HExécuteRequête et la fin de ta boucle, constates-tu un laps de temps anormal?

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut
    oui c'est la tableajouteligne qui prend du temps

    j'ai penser à une choses, à la limite j'ai pas besoin de charger d'un seul coup tous les enregistrements. je voudrai faire plusieurs lectures : limit 400 (les 400 premières lignes) , puis 401,1500, puis 1501,22000)

    mais j'arrive pas

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Et si tu utilises la fonction SQLTable()?

  13. #13
    Membre régulier
    Inscrit en
    Mars 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 63
    Points : 100
    Points
    100
    Par défaut
    17 000 lignes : ne s'agit il pas d'une erreur de conception de la fenetre...

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 271
    Points : 12 951
    Points
    12 951
    Par défaut
    Bonjour,
    Vu que tu utilises hExecuteRequete(), j'en conclue que ta requêtes est présente dans ton analyse.
    Dans ce cas, pourquoi ne pas utiliser une table fichier, liée à ta requête ? le chargement sera pris en charge par Windev, et (il me semble) sera fait en tâche de fond.

    Tatayo.

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    211
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Décembre 2002
    Messages : 211
    Points : 65
    Points
    65
    Par défaut
    Bonjour
    En réponse à ben-34
    J’ai décoché "Forcer le thème actif des champs sous windows XP/vista"
    Up, le résultat est super, amélioration d'environ 50%.
    Mais comme même je voudrai avoir le style XP au vista sur mes fenêtres.
    En réponse à tatayo
    Je voudrai, des fois coloriser une ligne correspond à un critère, par exemple
    Choses que je ne peux pas, je crois, avec table lié à la requête.
    En réponse à fucce
    Avez vous la gentilles de m'expliquer de plus comment.
    Merci d'avance pour tous.

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    498
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 498
    Points : 461
    Points
    461
    Par défaut
    Comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    TableSupprimeTout(TableEntete)
     
    SI SQLExecWDR(REQ_ListeBL) ALORS
    	SQLTable("REQ_ListeBL", "TableEntete")
    SINON
    	Erreur ( "Erreur d' initialisation de la requête REQ_ListeBL" + RC + HErreurInfo ())
    	RETOUR	
    FIN
    SQLFerme(REQ_ListeBL)

  17. #17
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 271
    Points : 12 951
    Points
    12 951
    Par défaut
    Citation Envoyé par ecoinfo Voir le message
    Bonjour
    En réponse à tatayo
    Je voudrai, des fois coloriser une ligne correspond à un critère, par exemple
    Choses que je ne peux pas, je crois, avec table lié à la requête.
    Bien sûr que si ! Il suffit de mettre le code dans la section "Affichage d'une ligne" !

    Tatayo.

  18. #18
    Membre expérimenté Avatar de klbsjpolp
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 065
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 065
    Points : 1 322
    Points
    1 322
    Par défaut
    Tu peux très bien colorer une ligne de ta table dans le code "Affichage d'une ligne", même en utilisant une table fichier.

  19. #19
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Citation Envoyé par fucce Voir le message
    Et si tu utilises la fonction SQLTable()?
    Pour compléter l'information, grâce à la fonction FichierVersTableMémoire(), il est possible aussi d'alimenter un champ table mémoire avec les données d'un fichier de données, d'une requête ou d'une vue .
    _

Discussions similaires

  1. Temps d'exécution requête Oracle sql trop Longue
    Par fatfat45 dans le forum Oracle
    Réponses: 1
    Dernier message: 10/07/2012, 19h26
  2. Problème temps d'exécution requête
    Par Mr_Coinche dans le forum Oracle
    Réponses: 6
    Dernier message: 18/11/2010, 16h29
  3. Temps d'exécution requête Access très long
    Par roman33 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 16/06/2009, 11h01
  4. Temps d'exécution requête Access très très long
    Par tranzebou dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 24/03/2009, 17h48
  5. Réponses: 2
    Dernier message: 04/04/2006, 11h46

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