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 :

Personnaliser le triage


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut Personnaliser le triage
    salut à tous , j'ai une petite projet pour gérer des élèves dans une établissement et j'ai une table mémoire qui stock les classes existant dans cette établissement . Voici le résultat sans triage

    CLASSE
    Seconde I
    Première L
    Seconde II
    Terminale S
    Terminale L
    Première S

    Et voici le résultat après le triage,

    CLASSE
    Première L
    Première S
    Seconde I
    Seconde II
    Terminale L
    Terminale S
    Ma question c'est j'aimerais savoir, si on peut personnaliser le triage c'est à dire que je souhaiterais avoir une résultat comme ci-dessous:

    CLASSE
    Seconde I
    Seconde II
    Première L
    Première S
    Terminale L
    Terminale S
    au lieu de ceci

    CLASSE
    Première L
    Première S
    Seconde I
    Seconde II
    Terminale L
    Terminale S






    Merci à tous ceux qui vont me répondre

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    Si les données sont enregistrées dans un fichier HF, il suffit d'y ajouter un rang...
    Dans tous les cas, tu ajoutes une colonne masquée avec un rang, et tu tries sur ce rang.

    Tatayo.

  3. #3
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Une solution :

    1/ Stocker toutes les classes dans un tableau de chaines
    2/ Effectuer un trie avec la fonction TableauTrie() en utilisant un type ttFonction ! Appeler une fonction qui effectue ton trie personnalisé.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tabClasses est un tableau de chaîne = ["Seconde I","Première L","Seconde II","Terminale S","Terminale L","Première S"]
     
    TableauTrie(tabClasses,ttFonction,TrieClasse)
    Avec une fonction TrieClasse :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    PROCEDURE TrieClasse(sClasse1 est une chaîne, sClasse2 est une chaîne)
     
    sClasse1_Niveau est une chaîne = ExtraitChaîne(sClasse1,rangPremier," ")
    sClasse1_Spé 	est une chaîne = ExtraitChaîne(sClasse1,rangDernier," ")
     
    sClasse2_Niveau est une chaîne = ExtraitChaîne(sClasse2,rangPremier," ")
    sClasse2_Spé 	est une chaîne = ExtraitChaîne(sClasse2,rangDernier," ")
     
    SELON sClasse1_Niveau
     
    	CAS "Seconde"	
    		SELON sClasse2_Niveau
    			CAS "Seconde"
    				SI sClasse1_Spé > sClasse2_Spé ALORS RENVOYER(1)
    				SI sClasse1_Spé = sClasse2_Spé ALORS RENVOYER(0)
    				SI sClasse1_Spé < sClasse2_Spé ALORS RENVOYER(-1)				
    			CAS "Première"  : RENVOYER(-1)
    			CAS "Terminale" : RENVOYER(-1)
    			AUTRE CAS 	   : RENVOYER(0)
    		FIN
     
    	CAS "Première"
    		SELON sClasse2_Niveau
    			CAS "Seconde"  : RENVOYER(1)			
    			CAS "Première"  :
    				SI sClasse1_Spé > sClasse2_Spé ALORS RENVOYER(1)
    				SI sClasse1_Spé = sClasse2_Spé ALORS RENVOYER(0)
    				SI sClasse1_Spé < sClasse2_Spé ALORS RENVOYER(-1)	
    			CAS "Terminale" : RENVOYER(-1)
    			AUTRE CAS 	   : RENVOYER(0)
    		FIN
     
    	CAS "Terminale"
    		SELON sClasse2_Niveau
    			CAS "Seconde"  : RENVOYER(1)			
    			CAS "Première"  : RENVOYER(1)
    			CAS "Terminale" :
    				SI sClasse1_Spé > sClasse2_Spé ALORS RENVOYER(1)
    				SI sClasse1_Spé = sClasse2_Spé ALORS RENVOYER(0)
    				SI sClasse1_Spé < sClasse2_Spé ALORS RENVOYER(-1)
    			AUTRE CAS 	   : RENVOYER(0)
    		FIN
     
    	AUTRE CAS
    		RENVOYER(0)
    FIN
     
    RENVOYER(0)
    Google est ton ami !

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos suggestions , je vais tester ce code , et je vous tiendrai au courant. à toute

  5. #5
    Membre confirmé

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 184
    Points : 619
    Points
    619
    Par défaut
    L'approche en ajoutant un rang présente l'avantage de toujours fonctionner et de laisser le code totalement indépendant des données.
    L'autre solution inclut les données dans le code et dans la vie d'une application, un jour ou l'autre, ça coince.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Le code proposé par LeonCosnyd résoudrait le problème si la classe est fixée c'est à dire qu'on ne peut pas ajouter des nouvelles classes , Mais dans mon Cas, on suppose qu'on peut ajouter de nouvelle classe au cas où on a besoin. comment donc faire en sorte que si on ajoute une nouvelle classe le table sera tout de suite trié par ce qu'on veut ?
    Merci encore pour votre réponse .

  7. #7
    Membre émérite
    Femme Profil pro
    .
    Inscrit en
    Janvier 2012
    Messages
    998
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : .
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2012
    Messages : 998
    Points : 2 524
    Points
    2 524
    Par défaut
    Tatayo t'a donné la solution !

  8. #8
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut
    Ma solution fonctionne si la nouvelle classe respecte le nommage "Seconde", "Première", "Terminale" (exemple Première ES). Si ce n'est pas le cas alors tu n'as pas d'autre choix que d'utiliser un indice de position.

    Il faudrait que tu nous dises comment tu créés et comment tu stockes les "classes" : utilises-tu une fenêtre de saisie réalisée par tes soins qui enregistre les classes dans une base HyperFile ? Si oui il te faut créer une nouvelle rubrique dans ton fichier HFSQL de type entier. Et d'y définir l'ordre d'affichage des classes (soit avec l'application que tu développes, soit par WDMAP, soit par le centre de controle HFSQL).

    Une fois cela fait, tu utilises une requete SQL ou un POUR TOUT en triant par ta nouvelle rubrique.
    Google est ton ami !

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    En fait , pour ajouter une classe j'ai utilisé la fenêtre de saisie.
    Si je comprend bien l'indice sera donc rempli manuellement et la table classe sera triée par cet indice.
    Merci encore à toi LeonCosnyd pour ta suggestion.

  10. #10
    Membre averti Avatar de LeonCosnyd
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 439
    Points : 368
    Points
    368
    Par défaut


    Oui effectivement l'indice d'affichage est à définir par tes soins.

    PS : J'ai juste détaillé la solution proposée par tatayo !
    Google est ton ami !

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    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 197
    Points : 12 772
    Points
    12 772
    Par défaut
    On peut faire beaucoup plus simple.
    Dans la fonction de comparaison, il suffit de récupérer avec un tableau associatif le rang des deux classes à comparer (en ne prenant que le premier mot du nom comme indice).
    En cas d'égalité, on repart sur un tri alphabétique.

    Code WinDev : 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
     
    PROCEDURE TrieClasse(sClasse1 est une chaîne, sClasse2 est une chaîne)
    taRangClasse est un tableau associatif d'entier
    taRangClasse["Seconde"] = 1
    taRangClasse["Première"] = 2
    taRangClasse["Terminale"] = 3
     
    sClasse1_Niveau est une chaîne = ExtraitChaîne(sClasse1,rangPremier," ")
    sClasse2_Niveau est une chaîne = ExtraitChaîne(sClasse2,rangPremier," ")
     
    si taRangClasse[sClasse1_niveau] > taRangClasse[sClasse2_niveau] alors renvoyer 1
    si taRangClasse[sClasse1_niveau] < taRangClasse[sClasse2_niveau] alors renvoyer -1
     
    si taRangClasse[sClasse1_niveau] = taRangClasse[sClasse2_niveau] alors 
    si sClasse1 > sClasse2 renvoyer 1
    si sClasse1 < sClasse2 renvoyer -1
     
    fin
    *
    RENVOYER(0)

    Je n'ai pas trop vérifié le sens des comparaisons, mais l'idée est là.
    Tatayo.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2015
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Chercheur en informatique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 17
    Points : 6
    Points
    6
    Par défaut
    Merci encore une fois à toi tatayo

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

Discussions similaires

  1. [langage] personnaliser le tri
    Par schnecke dans le forum Langage
    Réponses: 3
    Dernier message: 24/03/2004, 15h14
  2. [Débutant] Triage de données dans un String
    Par Poilou dans le forum C++Builder
    Réponses: 4
    Dernier message: 29/01/2004, 16h21
  3. Personnaliser un rapport d'erreur sous Windows XP
    Par Neilos dans le forum Windows
    Réponses: 5
    Dernier message: 21/11/2003, 18h13
  4. [FLASH MX2004] Personnaliser les scrollbars
    Par stephane eyskens dans le forum Flash
    Réponses: 10
    Dernier message: 09/10/2003, 12h53
  5. [VB6] [UserControl] Évènements personnalisés
    Par Frankywinky dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 27/05/2003, 17h56

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