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 :

[WD12] Comment trier des enregistrements filtrés sur base hyperfile ?


Sujet :

WinDev

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut [WD12] Comment trier des enregistrements filtrés sur base hyperfile ?
    Bonjour,
    je débute en windev sur la version 12 et je n'arrive pas à trouvé une solution pour trier sur ensemble d'enregistrement filtré avec la fonction hFiltre ou hLitRecherche.

    En passant par une table (affiché ou pas dans une fenetre) il y a pas de problème, un petit tableTrie sur la colonne voulue et on parcours la table triée. Pour ça pas de problème.
    Mais ce que j'aimerais, c'est me passer de cette table.
    Faire un truc du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // recherche de ttes les dates dont l'id ope est ma globale gnIdOpe
    HlitRecherche(FDates,IDOPERATION,gnIdOpe)
    TANTQUE PAS HEnDehors()
       Trace("ma date d'operation : "+FDates.DATES)
       HLitSuivant(FDates)
    FIN
    Le tout trié par date.... le problème est que si je fais cela, ça me renvois les bons résultats triés sur IDOPERATION. Comme c'est le même pour tous les enregistrements ramenés, ce tri n'est absolument pas cohérent...

    J'ai parcouru l'aide de Windev pour essayé de trouver une solution mais pas moyen de trouver une fonction (ou une option de fonction) qui permette de changer l'ordre des enregistrements parcourus...

    Si quelqu'un à la solution je suis preneur

    En attendant de vous lire, je vous souhaite à tous une bonne journée.

    Coach319

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Salut,

    Il faut faire un HFiltre(..) sur ta date et ensuite un HLitRecherche(..) sur la date également (cf. aide HLitRecherche).

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Salut, avant tout, merci de t'arreter sur mon problème.

    Je comprend pas trop quoi faire avec le hfiltre sur la date ?!?
    En fait, ramener mes enregistrements ( avec hFiltre ou h(Lit)Recherche ), il y a pas de problème... c'est les filtrer qui m'embête !
    Je vois pas ou mettre un équivalent de tableTrie(FDates,"col_date") quand j'ai pas de table d'affichage dans ma fenêtre afin de me renvoyer des résultats dans un ordre cohérent...

  4. #4
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Bon, c'est la fin de journée, je ne comprends ce que j'ai écrit et le résultat n'est pas celui recherché ^^

    En fait, pour ce cas de figure, tu pourrais passer par une requête qui trie au préalable par date et ensuite tu fais appel à cette requête par le HLitRecherche que tu mets en exemple.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    j'aurais vraiment souhaité évité de passer par les requêtes car j'ai pas envis de m'en taper une à chaque fois que je veux trier un fichier.
    L'aide de Windev dit que le HLitRecherche positionne sur le premier enregistrement remplissant les critères de selection. Ils ne parlent pas de tri du fichier donc il est possible que cette façon de faire fonctionne.
    A ce moment la, il y aurait pas une fonction du genre hTrie(fichier,clè de tri) (j'ai cherché celle-ci elle n'existe pas) qui trierait le fichier avant qu'on ne tape dedans ?

  6. #6
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    J'ai du mal à voir le résultat que tu aimerais avoir ?
    Le fait d'afficher le contenu de ta sélection dans une table et de faire un TableTrie n'a pas l'air de convenir ? Qu'est-ce qui te gêne dans ce système ?

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    ben c'est d'avoir à créer une table dans la fenetre chaque fois que j'ai besoin de trier des enregistrements filtrés sur un critère.

    Là tout de suite j'ai des opérations comprenant des dates de journées et de prestations dans chaques journées.
    Je fais une procédure de duplication d'opération (et tout ce que cela contient) qui parcours les dates de cette opération et les dupliques. Bien sur y a des controle sur les dates en fonction des jours de semaine etc etc etc... que du bonheur hôtelier

    Donc en fait quand je veux créer mes prestations de chaque journée j'aurais aimé ramener le listing de mes journées de mon opération, triées, pour pouvoir faire des duplications cohérentes... dans le désordre ça me convient moyen car suivant si la duplication tombe le WE ou pas on décalle les journées au lundi suivant ou pas.... enfin c'est le bordel donc vraiment plus simple si mes journées se suivent....
    Je sais pas si tout ça est bien clair...

  8. #8
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 344
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 344
    Points : 3 860
    Points
    3 860
    Par défaut
    Si cela me semble clair mais dans ce cas pourquoi le TableTrie ne te convient pas ?

    Tu peux l'utiliser sur plusieurs colonnes, et tu peux via de la compilation dynamique faire un TableTrie en cliquant sur plusieurs entêtes de colonne de ta table.

  9. #9
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut
    Il te suffit de créer un index sur la rubrique que tu veux voir triée.

    Ensuite, c'est simple, il te suffit d'utiliser la syntaxe POUR TOUT :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sMonFiltre est une chaine = "maDate = " + dateVersChaine(dDateParam)
    POUR TOUT monFichier AVEC sMonFiltre SUR maRubriqueCle
      //Montraitement
    FIN
    Voir l'aide du POUR TOUT pour plus de précisions.


    Bon dev !

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Merci pour vos réponses.... mais (oui je sais je suis un peu chiant !)

    Lo² : j'aurais vraiment souhaiter garder ce qui est affichage d'un coté dans la fenetre et ce qui est code, juste dans les procédures... en tout cas le plus possible... alors rajouter une table à chaque fois c'est pas terrible. Je préférerais un bout de code qui trie mes enregistrement avant traitement...

    peijnoob : j'ai essayé tout à l'heure cette méthode et ça ne me ramène pas ce que je souhaite... mais je l'ai peut-être mal codé je vais réessayé mes investigations dans ce sens là ! Mais... ta méthode là... elle trie les enregistrements ou elle les filtres pour une date donnée ?

    Merci à vous deux

  11. #11
    Membre actif Avatar de peijnoob
    Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    279
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 279
    Points : 294
    Points
    294
    Par défaut
    Citation Envoyé par Coach319 Voir le message
    Mais... ta méthode là... elle trie les enregistrements ou elle les filtres pour une date donnée ?
    Elle fait les 2 !

    Le "SUR" définit la rubrique de parcours du fichier, cad qu'il devrait (à moins que je ne me trompe) trier cette rubrique pour la lire du début à la fin.

    le "AVEC" définit tout simplement un filtre, que l'on peut écrire sous différentes formes.


    Sinon, pour ce qui est des requêtes, si tu trouves rébarbatif de les créer avec l'éditeur de Windev (ce qui, je consens, est totalement plausible ), tu peux faire ce que je fais dans quasiment tous les cas : les écrire directement en SQL dans le code et les exécuter avec la fonction HExecuteRequêteSQL.

    C'est très pratique, et plus rapide à écrire, je trouve !


    Bon dev !

  12. #12
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Trop fort Peijnood !
    J'ai adapté ce que tu m'as conseillé et bingo ça filtre et ça tri comme je le voulais !

    Pour ceux que ça interesse, la solution simplifié :
    // recherche de toutes les journées d'une opération dont le résultat est trié par date de journée
    // DATE rubrique date indexée

    POUR TOUT FDates AVEC "IDOPERATION="+gnIdOpe SUR "DATE"
    // mon traitement qui turbine
    FIN
    Merci à vous deux de vous être arrétez sur mon problème.
    Longue vie à developpez.net

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2013, 16h44
  2. [AC-2003] Fonction de somme sur des enregistrements filtrés
    Par tototiti2008 dans le forum IHM
    Réponses: 4
    Dernier message: 07/08/2009, 14h08
  3. Gestion internet des enregistrements d'une base sur un serveur
    Par Monbasinstinct dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/07/2007, 00h28
  4. Réponses: 3
    Dernier message: 01/12/2006, 20h31
  5. HELP!Comment supprimer des enregistrements de tables jointes
    Par ROOTPARIS dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/06/2004, 16h41

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