1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.
  2. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

AIDE Quelle méthode vous préférez ? POUR TOUT ... AVEC ou HlitPremier ;

Discussion dans 'Windev' créé par aminej76, Juin 13, 2018.

  1. aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102
    Bonjour,
    J'ai effectuée un module de recalcule de la quantité commandée et livrée pour chaque commande

    Puisque l'instruction Hfiltre est déconseillée, vous préférez la méthode 1 ou 2
    NB: COMMANDE_FOUR_COM représente les lignes des commandes

    Merci.
    ------------------------1 méthode-------------------------------
    Code (Windev):

    POUR TOUT COMMANDE_FOUR
        COMMANDE_FOUR.QT_TOT_LIVRE=0
        COMMANDE_FOUR.QT_TOT=0
     
        POUR TOUT COMMANDE_FOUR_COM  AVEC CLE_C=COMMANDE_FOUR.CLE_C
            COMMANDE_FOUR.QT_TOT_LIVRE+= COMMANDE_FOUR_COM.QT_LIVRE
            COMMANDE_FOUR.QT_TOT+= COMMANDE_FOUR_COM.QT_COMMANDE
        FIN
     
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (COMMANDE_FOUR)
    FIN
     
    ------------------------2 méthode-------------------------------
    Code (Windev):

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (COMMANDE_FOUR,CLE_C)
    TANTQUE PAS

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    ()
     
        COMMANDE_FOUR.QT_TOT_LIVRE=0
        COMMANDE_FOUR.QT_TOT=0
     
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (COMMANDE_FOUR_COM,CLE_C,COMMANDE_FOUR.CLE_C)
        TANTQUE

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


            COMMANDE_FOUR.QT_TOT_LIVRE+= COMMANDE_FOUR_COM.QT_LIVRE
            COMMANDE_FOUR.QT_TOT+= COMMANDE_FOUR_COM.QT_COMMANDE
        FIN

       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (COMMANDE_FOUR)
       

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    (COMMANDE_FOUR,CLE_C)
    FIN
     
     
    elhacene apprécie ceci.
  2. Fakirato

    Fakirato New Member
    WXG24 MEMBRE WX WXG 23 WXG 22 WXG 21

    Inscrit:
    Déc 30, 2017
    Messages:
    302
    J'aime reçus:
    816
    Bonsoir
    en exécution sur les éditeur WX c'est le même !
    pour tous , apelle hlitpremier et parcour le table :p

    alors en dev chacun a sa manière pour moi je préfère POUR TOUS c'est moins de code.
     
    mistersoft, joker et aminej76 aiment ça.
  3. Kelard

    Kelard Active Member
    MEMBRE WX

    Inscrit:
    Avr 6, 2018
    Messages:
    103
    J'aime reçus:
    134
    A savoir que le hlitpremier/hlitsuivant ou toute opération sur un fichier WD est plus lent en execution que le parcours d'une requête WD. :)

    Sinon pour répondre à la question, je préfère POUR TOUT.
     
  4. krm

    krm Member

    Inscrit:
    Jan 3, 2018
    Messages:
    31
    J'aime reçus:
    35
    Bonjour,
    Utilise une requête. c'est simple et plus rapide dans le traitement d'informations.
    Tu crées une requête qui fait la somme des quantités commandées et livrées pour chaque commande numéro commande.
    C'est quelques cliques juste sous l'éditeur d'analyse.
     
  5. rafik19

    rafik19 Member

    Inscrit:
    Jan 1, 2018
    Messages:
    35
    J'aime reçus:
    14
    en dev moi je préfère POUR TOUS
    bon dev
     
    joker et aminej76 aiment ça.
  6. krm

    krm Member

    Inscrit:
    Jan 3, 2018
    Messages:
    31
    J'aime reçus:
    35
    C'est pour optimiser le temps de calcul

    Pour Tout prend plus de temps qu'une requête.

    Pour chaque ligne de POUR TOUT, il y a un aller-retour. donc imagine, aller-retour x nombre de lignes à parcours. surtout si l'appli est réseau, alors plus de saturation réseau.
    Or pour une requête, il est question juste d'un aller-retour quel que soit le nombre de lignes à parcourir.
    Conseils de PCSOFT
     
    joker, aminej76 et Fakirato aiment ça.
  7. aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102
    La meilleure solution :
    Code (SQL):

    UPDATE COMMANDE_FOUR SET COMMANDE_FOUR.QT_TOT_LIVRE =
    (
    SELECT
    SUM(COMMANDE_FOUR_COM.QT_LIVRE) AS SUM_QT_LIVRE
    FROM
    COMMANDE_FOUR_COM
    WHERE
    COMMANDE_FOUR.CLE_C = COMMANDE_FOUR_COM.CLE_C
    )

    ,

    COMMANDE_FOUR.QT_TOT =
    (
    SELECT
    SUM(COMMANDE_FOUR_COM.QT_COMMANDE) AS SUM_QT_COMMANDE
    FROM
    COMMANDE_FOUR_COM
    WHERE
    COMMANDE_FOUR_COM.CLE_C = COMMANDE_FOUR.CLE_C
    )
     
     
  8. aminej76

    aminej76 Active Member
    MEMBRE WX

    Inscrit:
    Jan 23, 2018
    Messages:
    283
    J'aime reçus:
    102

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    C'est quelques cliques juste sous l'éditeur d'analyse.
    Cliquez pour agrandir...
    Stp expliquer nous ton idée.
    Merci.
     
  • krm

    krm Member

    Inscrit:
    Jan 3, 2018
    Messages:
    31
    J'aime reçus:
    35

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Mon idée ? C'est le code que t'as publié :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    La meilleure solution :
    Code (Text):

    UPDATE COMMANDE_FOUR SET COMMANDE_FOUR.QT_TOT_LIVRE =
    (
    SELECT
    SUM(COMMANDE_FOUR_COM.QT_LIVRE) AS SUM_QT_LIVRE
    FROM
    COMMANDE_FOUR_COM
    WHERE
    COMMANDE_FOUR.CLE_C = COMMANDE_FOUR_COM.CLE_C
    )

    ,

    COMMANDE_FOUR.QT_TOT =
    (
    SELECT
    SUM(COMMANDE_FOUR_COM.QT_COMMANDE) AS SUM_QT_COMMANDE
    FROM
    COMMANDE_FOUR_COM
    WHERE
    COMMANDE_FOUR_COM.CLE_C = COMMANDE_FOUR.CLE_C
    )
     
    Cliquez pour agrandir...
     
    aminej76 apprécie ceci.
  • elhacene

    elhacene Active Member
    MEMBRE WX

    Inscrit:
    Jan 14, 2018
    Messages:
    299
    J'aime reçus:
    150
    pour tout et bonne pour le parcours des champ table sa évite de mentionner les indice des variables
     
    aminej76 apprécie ceci.
  • perceval

    perceval Member
    WXG24 MEMBRE WX

    Inscrit:
    Mai 19, 2018
    Messages:
    50
    J'aime reçus:
    27
    Dans ma foulosophie de programmation et reponse brute comme cela, je partirais pour la solution de cas (POUR TOUT). Moi a priori je base toujours ma decision sur une requite prealablement etablie que d'attaquer la table diretement. Je vous assure qu'ave une table de 100.000 enregistrement vous sentirez tout de suite la difference. Maintenant je n'utiliserais pas pour tout si je cherche juste une entite dans la table, in specific record car je n'ai pas besoin de parcourir toute la table. Maintenant dans ton cas comme l;on parle de quantite alors je pars pour la solution POUR TOUT.
    A+
     
    aminej76 apprécie ceci.
  • Gemini1961

    Gemini1961 Well-Known Member
    MEMBRE WX DUMP TEAM

    Inscrit:
    Jan 2, 2018
    Messages:
    572
    J'aime reçus:
    863
    Serais-je le seul à préférer HLitPremier ?

    :-D
     
    irobot apprécie ceci.
  • irobot

    irobot Active Member
    MEMBRE WX

    Inscrit:
    Jan 10, 2018
    Messages:
    140
    J'aime reçus:
    131

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Serais-je le seul à préférer HLitPremier ?

    :-D
    Cliquez pour agrandir...
    non, moi aussi !
    en fait, ca depend.

    - sur les grosses tables et les update en masse, je prefere le sql
    - sur les parcours tordus avec des updates en cascade, je prefere le hlitpremier/hlitsuivant
    -sur les remplissage de table mémoire, le pour tout.

    en fait, en fonction des volumes à traiter ( lecture, lecture/ecriture, ecriture) j'adapte à ce qui est le plus performant :)

    pourquoi, me direz-vous ?

    - les ecritures de masse ( update) sont plus performantes en sql ( pas d'aller/retour des données)
    - le pour tout est performant en lecture selon un index
    - le hlitpremier/hlitsuivant permet de modifier l'etat de la table en cours de parcours ( suppression d'enregistrement, modification de la clé d'index, etc)

    a chaque instruction son interet...
     
    Gemini1961 apprécie ceci.
  • Partager cette page

    Chargement...