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 :

Trier ma Table


Sujet :

WinDev

  1. #41
    Invité
    Invité(e)
    Par défaut
    Vous pouvez faire dans ce genre là par exemple, mais dans ce cas, il faut remplacer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement="1-" + FGRAVEL.REFE1
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-1"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement="2-" + COL_REFE1[IndiceLigne]
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-2"
    Autre façon : ajouter un nouvel argument dans la fonction TableAjouteLigne
    PS: j'avais édité mon message initial pour mieux gérer le tri

  2. #42
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Je ne comprend pas comment je peux obtenir ça(qui donc n'est pas ce que je recherche):
    Nom : Capture.PNG
Affichages : 114
Taille : 45,5 Ko
    Avec ce code la:
    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
    POUR TOUT FGRAVEL 
     
    	SELON FGRAVEL.TYPF1 
    		CAS 1
     
    			TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    			FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    			FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,hFixeIdAuto)	
    			COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-1"
    		CAS 2 
     
    			CodeArticle est une chaîne=SansEspace(Gauche(FGRAVEL.COMM1, 10))
    			IndiceLigne est un entier=(TableCherche(COL_REFE1, CodeArticle,1))
     
    			SI IndiceLigne <>-1     ALORS
    				TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    				FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    				FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,hFixeIdAuto)
    				COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-2"
    			FIN
    		FIN
    		TableTrie(TABLE_FGRAVEL,"+COL_regroupement")
    FIN

  3. #43
    Invité
    Invité(e)
    Par défaut
    On peut voir la nouvelle colonne?

  4. #44
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Si vous parlez de la colonne regroupement et bien elle est vide.

  5. #45
    Invité
    Invité(e)
    Par défaut
    ajoutez alors la valeur en ajoutant un nouvel argument dans TableAjouteLigne

  6. #46
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Je ne comprend pas, c'est à dire ?
    Je dois mettre TableAjouteLigne(...,"L'argument dont vous me parlez")

  7. #47
    Invité
    Invité(e)
    Par défaut
    c'est bien cela, mais avez-vous bien la colonne COL_REGROUPEMENT en dernière position dans la table?

  8. #48
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Oui en dernière position mais je ne comprend pas quoi mettre entre les parenthèses(en argument).

  9. #49
    Invité
    Invité(e)
    Par défaut
    Si FGRAVEL.TYPF1=1, mettre FGRAVEL.REFE1+"-1" dans la nouvelle colonne, sinon, COL_REFE1[IndiceLigne]+"-2"

  10. #50
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Donc si j'ai bien compris il faut que je fasse ça:
    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
    POUR TOUT FGRAVEL 
     
    	SELON FGRAVEL.TYPF1 
    		CAS 1
     
    			TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    			FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    			FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,FGRAVEL.REFE1+"-1",hFixeIdAuto)	
    			COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-1"
    		CAS 2 
     
    			CodeArticle est une chaîne=SansEspace(Gauche(FGRAVEL.COMM1, 10))
    			IndiceLigne est un entier=(TableCherche(COL_REFE1, CodeArticle,1))
     
    			SI IndiceLigne <>-1     ALORS
    				TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    				FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    				FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1, COL_REFE1[IndiceLigne]+"-2",hFixeIdAuto)
    				COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-2"
    			FIN
    		FIN
    		TableTrie(TABLE_FGRAVEL,"+COL_regroupement")
    FIN
    Mais avec ça la colonne regroupement reste vide.

  11. #51
    Invité
    Invité(e)
    Par défaut
    les lignes de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-1"
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-2"
    peuvent disparaitre

  12. #52
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Et bien même en enlevant les lignes la colonne reste vide.

  13. #53
    Invité
    Invité(e)
    Par défaut
    Que représente hFixeIdAuto dans TableAjouteLigne?

  14. #54
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    Je voulais essayer un truc avec les identifiant automatique mais je n'ai pas réussi et j'ai oublié de l'enlever.

  15. #55
    Invité
    Invité(e)
    Par défaut
    Je pense que ça vient d'un problème de remplissage.
    Pour mieux le voir, il est impératif à ce que la fonction TableAjouteLigne soit écrite sur une seule ligne (de pas couper la ligne par des ...), ensuite, faire un simple clic gauche sur une valeur qu'on ajoute à la table, puis, faire ALT + F1, une petite info bulle apparait qui dit à quelle colonne cela correspond.

  16. #56
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 39
    Points : 10
    Points
    10
    Par défaut
    C'est bon, Merci beaucoup. En effet il manquait une colonne.
    Mon tuteur va être content.

  17. #57
    Invité
    Invité(e)
    Par défaut
    Ne pas oublier de cliquer sur "Résolu" quand un problème est solutionné

  18. #58
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    1 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 1 075
    Points : 2 441
    Points
    2 441
    Par défaut
    Bonsoir,

    Je repasse ce soir et comme cela semble quasi résolu, je n'ai pas lu le reste de la discussion.

    Juste une chose que j'avais omis de relever :
    		CAS 2 
     
    			CodeArticle est une chaîne =SansEspace(Gauche(FGRAVEL.COMM1, 10))
    			IndiceLigne est un entier  =(TableCherche(COL_REFE1, CodeArticle,1))
    Vous déclarez les 2 variables CodeArticle et IndiceLigne à chaque passage dans cette section du code.
    Il faut déclarer ces variables en amont, au début de votre code, et ensuite, vous les affectez quand nécessaire.

  19. #59
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 049
    Points : 9 384
    Points
    9 384
    Par défaut
    Différentes petites choses :

    Tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    			FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    			FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,FGRAVEL.REFE1+"-1",hFixeIdAuto)	
    			COL_regroupement[TABLE_FGRAVEL..Occurrence]=FGRAVEL.REFE1+"-1"
    Tu pourrais faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    			FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1,FGRAVEL.SENT1,FGRAVEL.NBRC1,FGRAVEL.TYPC1,FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    			FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1,FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,FGRAVEL.REFE1+"-1",hFixeIdAuto , FGRAVEL.REFE1+"-1" )
    Ca ne change pas grand chose, mais ça fait juste un code plus cohérent.


    Point n°2, tu fais un : Pour TOUT FGRAVEL et ensuite tu traites toutes les lignes dans l'ordre où le POUR TOUT a renvoyé les lignes.

    Si par un malheureux hasard, ta boucle cherche à traiter d'abord une ligne DETAIL, puis la ligne PRODUIT correspondant à ce DETAIL, ça doit poser problème, non ? Est-tu garanti que ça n'arrivera pas ?

    Point n°3 , tu fis un tablecherche(), très bien, mais alors exploitons cette information jusqu'au bout :
    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
     
    OUR TOUT FGRAVEL 
     
    	SELON FGRAVEL.TYPF1 
    		CAS 1
     
    			   TableAjouteLigne(TABLE_FGRAVEL,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1,FGRAVEL.COMP1,FGRAVEL.CODP1, FGRAVEL.VILL1,FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    			FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1, FGRAVEL.SENT1,FGRAVEL.NBRC1, FGRAVEL.TYPC1, FGRAVEL.NBSM1,FGRAVEL.POID1,FGRAVEL.VOLU1,
    			FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1,FGRAVEL.MTVE1,FGRAVEL.DEVE1, FGRAVEL.MTCR1,FGRAVEL.DEVC1,FGRAVEL.MDCR1,FGRAVEL.ECCR1,FGRAVEL.REFE1+"-1",hFixeIdAuto,  FGRAVEL.REFE1+"-1" ) 	
     
    		CAS 2 
     
    			CodeArticle =SansEspace(Gauche(FGRAVEL.COMM1, 10))
    			IndiceLigne=TableCherche(COL_REFE1, CodeArticle,1)
     
    			SI IndiceLigne <>-1     ALORS
    				TableInsèreLigne(TABLE_FGRAVEL indice_ligne+1 ,FGRAVEL.TYPF1,FGRAVEL.IDEN1,FGRAVEL.COMM1, FGRAVEL.COMP1,FGRAVEL.CODP1,FGRAVEL.VILL1, FGRAVEL.PAYS1,SansEspace(FGRAVEL.REFE1),
    				FGRAVEL.REFF1,FGRAVEL.DATE1,FGRAVEL.PROD1,FGRAVEL.MODV1, FGRAVEL.SENT1,FGRAVEL.NBRC1, FGRAVEL.TYPC1,FGRAVEL.NBSM1, FGRAVEL.POID1,FGRAVEL.VOLU1,
    				FGRAVEL.NBPC1,FGRAVEL.NBUN1,FGRAVEL.MTVA1,FGRAVEL.DEVV1, FGRAVEL.MTVE1,FGRAVEL.DEVE1, FGRAVEL.MTCR1,FGRAVEL.DEVC1, FGRAVEL.MDCR1,FGRAVEL.ECCR1, COL_REFE1[IndiceLigne]+"-2",hFixeIdAuto,  FGRAVEL.REFE1+"-2") 
     
                            SINON
                                   Erreur ( " J'ai une ligne de type DETAIL alors que la ligne PRODUIT correspondant n'existe pas ", codeArticle)				 
    			FIN
    		FIN
     
    FIN
    Avec TableInsereLigne() tu choisis directement l'endroit où tu insères la ligne, et donc plus besoin de faire un TableTrie() à la fin.



    C'est une variante parmi d'autres... avec la colonne 'cachée' qu'on t'a proposé d'ajouter à la fin, ça devrait aussi marcher très bien.


    Dernier point : A différentes reprises, tu as demandé 'est-ce que c'est possible ?'
    La question n'est pas de savoir si c'est possible, bien sûr et heureusement que c'est possible. Si Windev ne permettait pas d'afficher des données dans un ordre imposé, alors Windev n'existerait pas.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  20. #60
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par tbc92 Voir le message
    Dernier point : A différentes reprises, tu as demandé 'est-ce que c'est possible ?'
    La question n'est pas de savoir si c'est possible, bien sûr et heureusement que c'est possible. Si Windev ne permettait pas d'afficher des données dans un ordre imposé, alors Windev n'existerait pas.
    Tout est question de philosophie, quand quelque chose n'est pas possible, la plupart du temps, ça vient dans notre façon de raisonner qui n'est pas la bonne solution à adopter, et ce, quelque soit le langage de programmation qu'on utilise. Personnellement, j'avais voulu migrer du code vb.net en wlangage sur un projet assez complexe (j'ai mis 3 mois pour valider toute la partie test, et 2 jours pour faire le développement en production), sur les 2 poins les plus délicats, j'ai pu en régler qu'un seul.

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. [JTable]Trier la table
    Par FFF dans le forum Composants
    Réponses: 12
    Dernier message: 22/09/2011, 12h11
  2. Comment trier une table paradox dans un Ttable sur un Dbgrid
    Par amireve dans le forum Bases de données
    Réponses: 5
    Dernier message: 26/12/2005, 19h28
  3. Trier une table .db paradox
    Par James64 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/10/2005, 11h01
  4. Trier une table avec valeur de differentes unités
    Par Sydaze dans le forum Bases de données
    Réponses: 8
    Dernier message: 01/06/2005, 11h43
  5. [VB.NET] Trier une table de mon DataSet
    Par San Soussy dans le forum ASP.NET
    Réponses: 3
    Dernier message: 03/03/2005, 17h30

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