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 :

Comment faire un filtrage sur une table [WD14]


Sujet :

WinDev

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut Comment faire un filtrage sur une table
    Salut,
    Au fait, j'ai 2 tables dans une fenêtre et je souhaiterais que la deuxième table n'affiche que les données liées à la ligne selectionnée dans la première. C'est à dire qu'en supposant que je dispose de 2 fichiers interliés:
    - fich1 et fich2 dont la clé commune est id_fich1; et que dans une même fenêtre je crée 2 tables:
    -table1 liée à fich1 et table2 à fich2

    Comment dois-je procéder pourqe le contenu de la table2 s'affiche en fonction de la ligne selectionnée dans la table1?

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 319
    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 319
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,
    Si ce sont des tables fichier, tu peux utiliser hFiltre sur le deuxième fichier en fonction de la ligne sélectionnée dans la première table.
    Si ce sont des tables mémoire, il suffit de ne récupérer que les enregistrements nécessaires: requête, filtre... c'est selon.

    Tatayo.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Oui, il s'agit des tables fichiers, mais je ne sais pas en réalité comment utiliser le "HFiltre". Je ne sais ni la synthaxe, ni où il faut mettre le code dans la 2è table, comme vous le dites
    Merci de me donner un coup de main; je suis vraiment bloqué!

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 319
    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 319
    Points : 13 092
    Points
    13 092
    Par défaut
    Comme le contenu de la deuxième varie en fonction de la ligne sélectionnée dans la première, je dirai que hFiltre doit être appelé dans la section "sélection d'une ligne" de la première table.
    Pour la syntaxe, c'est tout simple:

    Tatayo.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    merci pour ces détails, mais je ne me suis pas encore sorti comme je le souhaite. Au fait, le code que j'ai utilisé dans la partie "selection d'une ligne..." de la table1 me renvoie un seul enregistrement au lieu de tous les enregistrements.
    voici le code utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TABLE2..Filtre = COL_IDfich1 
    TableAffiche(TABLE2,taDébut)
    Avec ce code, quand je selectionne une ligne dans la table1, un seul enregistrement est affiché dans la seconde table, au lieu de tous les enregistrements liés à la ligne selectionnée dans la première.

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 319
    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 319
    Points : 13 092
    Points
    13 092
    Par défaut
    Est-ce que tu as essayé avec hFiltre() ?

    Tatayo.

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Oui, mais cela n'a rien donné; voici le code que j'avais utilisé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DésactiveFiltre(table1)
    HFiltre(table2,IDfich1,table1,table1)
    TableAffiche(Table2)

  8. #8
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Le filtre il faut l'appliquer sur le fichier et non pas la table :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DésactiveFiltre(fich2 )
    HFiltre(fich2 ,IDfich1,table1.IDfich1,table1.IDfich1)
    TableAffiche(Table2)
    à bientôt,

    Nicolas

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Je viens de mettre votre code, mais quand je selectionne une ligne dans la 1ère table, rien ne s'affiche dans la seconde
    Je souligne qu'au lieu de "table1.IDfich1" dans HFiltre, c'est "table1.COL_IDfich1" que j'ai mis, car "table1.IDfich1" génère des erreurs.

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 319
    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 319
    Points : 13 092
    Points
    13 092
    Par défaut
    Tu peux nous montrer ton code ?

    Tatayo.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Le voici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DésactiveFiltre(fich2 )
    HFiltre(fich2 ,IDfich1,table1.COL_IDfich1,table1.COL_IDfich1)
    TableAffiche(Table2)
    Je l'ai mis dans la partie "Selection d'une ligne...." de la table1

  12. #12
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Est-ce que Table2 est bien une table liée au fichier Fich2 ? Si non, il faut le faire car l'actualisation ne donnera rien !

  13. #13
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 319
    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 319
    Points : 13 092
    Points
    13 092
    Par défaut
    Et ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    HFiltre(fich2 ,chaineconstruit("fich2.IDfich1 = %1",table1.COL_IDfich1))
    TableAffiche(Table2,tainit)
    Je fais ainsi dans une application, et ça fonctionne...

    Tatayo.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Merc pour vos réactions, mais ça ne marche toujours pas.
    Voici le code que je viens de mettre, comme l'a suggéré Tatayo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DésactiveFiltre(fich2 )
    HFiltre(fich2 ,chaineconstruit("fich2.IDfich1 = %1",table1.COL_IDfich1))
    TableAffiche(Table2,tainit)
    Rien ne s'affiche dans la 2è table

    Par rapport à ce que Nicolas_Jeanneau à dit, j'ai pas bien compris; qu'à même lors de la création de la table2, j'ai bien choisi l'option afficher le contenu du fich2, mais elle n'est liée à aucune rubrique (dans sa description, "rubrique liée" est à "aucun"-> Option LIAISON)

  15. #15
    Membre confirmé Avatar de mnw.william
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2011
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 311
    Points : 458
    Points
    458
    Par défaut
    Bonjour et BONNE ANNEE 2012

    J'ai exactement eu le même problème que toi. Ce que j'ai fait c'est que j'ai crée une zone de texte qui affichait l'information de la colonne de la table que je sélectionnait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SAI_Affiche = tableFich.Col_Information
    ensuite je faisait un HFiltre ()

    Comme ca devenait lent avec le temps et puisqu'il y'avait beaucoup d'infos.
    j'ai essayer directement sur la sélection de la ligne de table la commande TableActiveFiltre() et ca marche super bien et sans pb.

    Donc essaye ca dans table_fich1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableActiveFilte(Table_fich2.col_,filtrecontient,tablefich1.col)
    TableAffiche(table_fich2)

  16. #16
    Membre confirmé Avatar de mnw.william
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Janvier 2011
    Messages
    311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 311
    Points : 458
    Points
    458
    Par défaut
    Citation Envoyé par mnw.william Voir le message
    Bonjour et BONNE ANNEE 2012

    J'ai exactement eu le même problème que toi. Ce que j'ai fait c'est que j'ai crée une zone de texte qui affichait l'information de la colonne de la table que je sélectionnait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SAI_Affiche = tableFich.Col_Information
    ensuite je faisait un HFiltre ()

    Comme ca devenait lent avec le temps et puisqu'il y'avait beaucoup d'infos.
    j'ai essayer directement sur la sélection de la ligne de table la commande TableActiveFiltre() et ca marche super bien et sans pb.

    Donc essaye ca dans table_fich1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TableActiveFilte(Table_fich2.col_,filtrecontient,tablefich1.col)
    TableAffiche(table_fich2)
    En tenant compte que table_fiche2 est exactement le nom de la table et COL_ est le nom de la colonne de ton TDFich

  17. #17
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Merci,
    je vais l'essayer et te tenir informer. Mais, n'est pas que col_ fait référence à la colonne "clé commune" aux 2 fichiers?

  18. #18
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Salut, je viens d'essayer le code proposé. C'est tous les enregistrements qui s'affichent dans la 2è table, quelque soit la ligne selectionnée dans la 1ère! Je ne sais pas pourquoi ça ne marche pas chez moi!!
    J'ajoute qu'il y existe dans la fenêtre permettant d'ajouter les informations (données) du Fich2, une combo qui est liée à Idfich1 afin de pouvoir selectionner un élément enregistré du fich1. Voici les caractéristiques de cette combo:
    • Fichier Parcouru=Fich1
    • Rubrique mémorisée=Aucun
    • Rubrique affichée=Nom_élément_Fich1
    • Rubrique de parcours=IdFich1

    Peut être que cette précision pourrait vous aider à y voir plus clair.

  19. #19
    Membre émérite
    Homme Profil pro
    Développeur et responsable micros/réseaux
    Inscrit en
    Octobre 2010
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur et responsable micros/réseaux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 286
    Points : 2 562
    Points
    2 562
    Par défaut
    Bonjour,

    pourrais-tu créer une autre fenêtre avec juste une combo qui affiche id_fich1 en provenance de Fich1 et une table qui liée au fichier Fich2.

    Dans le code de sélection d'une ligne de la combo, tu fais juste un filtre sur ID_Fich1 de Fich2 et tu réaffiches la table.

    à bientôt,

    Nicolas

  20. #20
    Nouveau membre du Club
    Inscrit en
    Mai 2010
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 65
    Points : 26
    Points
    26
    Par défaut
    Ok, merci
    J'ai déjà tenté une fois cela et c'était nickel! , mais je souhaiterais que l'utilisateur voie tous les enregistrements du fichier en même temps dans un tableau et de selectionner ce dont il veut obtenir les détails, en quelque sorte; et non dérouler une combo pour chercher.
    Je crois que par finir je vais me contenter d'une autre combo, comme tu me l'as dit

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Comment faire un zoom sur une table
    Par laurent30s dans le forum Contribuez
    Réponses: 0
    Dernier message: 23/01/2013, 11h51
  2. Comment faire un zoom sur une table
    Par laurent30s dans le forum WinDev
    Réponses: 2
    Dernier message: 23/01/2013, 11h49
  3. [AC-2003] comment faire pour rechercher sur une table ?
    Par Kalem dans le forum VBA Access
    Réponses: 8
    Dernier message: 10/04/2012, 10h33
  4. Réponses: 2
    Dernier message: 03/09/2009, 17h02
  5. comment faire un DROP sur une NESTED TABLE
    Par gilux dans le forum Oracle
    Réponses: 1
    Dernier message: 14/03/2006, 19h07

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