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 :

[WD5.5] Tri d'une table fichier.


Sujet :

WinDev

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut [WD5.5] Tri d'une table fichier.
    Bonjour,

    J'ai un souci avec une table dénommée TABLE_CLIENTS qui se trouve dans la fenêtre CL_LISTE. A l'ouverture de cette fenêtre on appelle la procédure d'initialisation de la table, qui consiste à remplir les champs de la table via un fichier HF etc.

    Bref mon souci c'est que je voudrais trier ma table par Raison Sociale (un champ de la table appelé RAISON_SOC, libellé Raison Sociale) croissante. ORdre alphabétique quoi.
    J'utilise la fonction TableTri("RAISON_SOC") mais ça ne fonctionne pas. Quel que soit l'endroit du code où je le place.
    De plus la table est définie à la création comme triable (donc en théorie en cliquant sur une colonne ça doit la trier) mais ça ne fonctionne pas.
    Comment y remédier?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Si ta table est une table fichier, comme tu sembles le préciser dans le titre, les tris ne peuvent avoir lieu que sur des rubriques CLEF !

    Si tu veux pouvoir trier sur n'importe quelle colonne tu dois utiliser une Table Mémoire.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Le champ RAISON_SOC est Clé avec doublons. Je peux trier dessus normalement, non?

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Voir l'aide en ligne de TableTri >>>

    TableTri n'est gardée que pas compatibilité, elle est remplacée par TableTrie (y a pas une grande diff, mais c'est quand même différent )


    TableTri ne peut être utilisé QUE pour des tables mémoires

    TableTrie peut-être utilisé autant sur table mémoire que table fichier à condition que la table sois en parcours automatique.

    Voir l'aide sur cette fonction pour plus d'explication.

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Je n'ai pas la fonction TableTrie

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Quelle version de Windev utilises-tu ?

    [EDIT] Je viens de voir que tu avais précisé Windex 55 !

    Dans cette version, TableTri ne fonctionne QUE pour les tables mémoire !

    Le tri sur les tables fichiers se fait pas clic sur le titre d'une colonne clef ou par programmation dans les traitements "Lecture PRemier, suivant, précédent, dernier".

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Aucune colonne ne réagit au clic pourtant REFERENCE est clef, et Raison Sociale est clé avec doublons dans le fichier donc je vois pas.
    Sinon pour coder dans les événements Lecture premier, etc., je vois pas du tout :s

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Si je comprends bien, pas le choix il va falloir que je remplace les tables fichiers par des tables mémoires?

    Sinon comment est-ce que je peux gérer les vues pour arriver à ce que je veux? Déjà puis-je utiliser une vue pour faire un tri avec une table fichier?

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Citation Envoyé par Thanor
    Aucune colonne ne réagit au clic pourtant REFERENCE est clef, et Raison Sociale est clé avec doublons dans le fichier donc je vois pas.
    Sinon pour coder dans les événements Lecture premier, etc., je vois pas du tout :s
    Attention au style des Tables. Pour que les titres de colonnes soit cliquables tu dois mettre les titres en bouton 3D je crois ou qqchoses comme ça.

    Perso, quand je veux donner la possibilité de Trier sur différentes colonnes d'une table fichier (qui comporte donc plusieurs clef) je le fais manuellement.

    1) Evenement sur WM_USER + 505
    1 booléen pour savoir si le tri est ascendant / descendant ( init = Vrai)
    Une variable contenant la clef en cours. (init = Clef de départ)

    2) Fonction appelée par l'évenement
    Récupération du nom de la colonne cliquée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
           cColonne	= InfoObjet( "TABLE", 26, _eve.wparam)
           TriTable( cColonne)
    Tri si nécessaire
    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
    Procédure TriTable( pCol, pAffTable = vrai)
    local
    	cColonnes		est une chaine	= "NUMOF/CODART" //Seules les colonnes NUMOF ET CODART sont des clefs, et donc peuvent être triées.
     
    si position( cColonnes, pCol) <> 0 alors //La colonne est-elle triable ?
    	si pCol = gcClef alors                 //Cliques sur la même colonne, on change le sens du tri
    		si glTriAsc alors
    			glTriAsc = faux
    		sinon
    			glTriAsc = vrai
    		FIN
    		si pAffTable alors TableAffiche("TABLE", "P")
    	sinon                                      //Clique sur une autre colonne, on tri
    		glTriAsc = vrai
    		gcClef = pCol
    		gkDBF:ChangeCle( "OFB", gcClef)  //Les fichiers sont gérés à travers une classe car ce sont des Fichier dBase, mais le principe reste le même !
    		si pAffTable alors TableAffiche("TABLE", "P")
    	fin
    	ChangeImage( gcClef)   // J'affiche une petite image au dessus de la colonne triée
    FIN
    Voila,j'espere que ça pourra t'aider.

  10. #10
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Bon, étant donné que c'est du code que je reprends, qui comprend plusieurs 10aines de fenêtres et d'appels de procédures et de fichiers etc. j'avais pas tout tout vu, mais j'ai pu me débrouiller, j'ai simplement changé la clé de parcours du fichier lors du remplissage de la table sans changer le filtre, et ça fonctionne.
    Bon maintenant que ma table est triée je dois résoudre le problème de l'impression de cette table, qui elle imprime la table non triée lol.
    Un pas de fait merci pour les éléments de réponse.

    [Edit] tout compte fait, fallait modifier la clé de parcours lors du remplissage de la liste de l'état, ça fonctionne nickel à présent

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    19 647
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 19 647
    Points : 32 889
    Points
    32 889
    Par défaut
    Pour imprimer la Table tu crées un État sur table, il t'imprimera la Table comme elle est à l'écran

  12. #12
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 121
    Points : 65
    Points
    65
    Par défaut
    Oui, mais dans la mesure où l'état était déjà existant, codé, et tout, je n'avais qu'à faire la modification requise

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    Bonjour, je fais remonter ce sujet parce que j'ai le même problème et je n'ai pas compris la solution en lisant les messages.

    Je m'explique : je veux trier une table fichier (que j'affiche) selon le clic sur les colonnes affichées. Par exemple le nom du client, sa commune, etc...

    Est-ce que quelqu'un pourrait m'expliquer clairement la solution présentée ici ?
    Existe-t-il d'autres solutions ?

    Merci d'avance à tous

  14. #14
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Comme préciser ultérieurement, pour pouvoir trier une table fichier il faut
    que les colonnes soient des clefs du fichier.

  15. #15
    Nouveau membre du Club
    Inscrit en
    Janvier 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 63
    Points : 34
    Points
    34
    Par défaut
    J'ai modifié l'analyse et dans mon fichier client, j'ai mis NOM_CLI (le nom du client) et COM_CLI (sa commune de résidence) en clés avec doublons.

    Je désire commencer simple et faire un tri uniquement sur ces deux colonnes.

    Mais lors de l'affichage, j'affiche d'autres colonnes que ces 2 là. dois-je aussi mettre les autres en clé ou il est possible de faire un tri sur seulement 2 colonnes sur toutes celles affichées ?

  16. #16
    Inactif  
    Profil pro
    Inscrit en
    Février 2003
    Messages
    4 341
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 4 341
    Points : 5 953
    Points
    5 953
    Par défaut
    Il est surtout impossible d'effectuer un tri sur des colonnes non triées, donc ne t'inquiètes pas des colonnes qui ne sont pas clef !

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

Discussions similaires

  1. [WD11] Tri sur une table multi-fichier
    Par cheche49 dans le forum WinDev
    Réponses: 7
    Dernier message: 14/04/2010, 10h30
  2. tri dans une table
    Par tchimou dans le forum Bases de données
    Réponses: 6
    Dernier message: 02/05/2007, 00h11
  3. probleme de tri dans une table
    Par tchimou dans le forum Bases de données
    Réponses: 4
    Dernier message: 03/04/2007, 15h59
  4. fonction qui fait le tri d'une Table de BDD
    Par devlopassion dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/10/2006, 15h28
  5. [Acces] Tri dans une table
    Par badnane2 dans le forum Access
    Réponses: 3
    Dernier message: 01/08/2006, 23h34

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