|
Filtrer dans 3 colonnes d'une table |
Started by David, Jan., 22 2020 12:10 AM - 13 replies |
| |
| | | |
|
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 22 2020 - 12:10 AM |
Bonjour
Dans une fenêtre, une Table alimentée par un fichier "Atelier" avec 5 rubriques "Bâtiment" - "Service" - "Jour_Achat" - "Jour_Utilisé" - "Jour_Usé"
Sur cette fenêtre un champ de saisie et un bouton "Recherché"
Si je saisis "Lundi" dans le champ de saisie, clic sur "Rechercher", J'aimerais que la Table m'affiche le "Bâtiment" et le "Service" qui correspond à un "Lundi"
Dans le bouton si je recherche sur une seule colonne avec ce code, ça fonctionne
TableActiveFiltre(TABLE_BDAteliers.COL_Jour_Achat,filtreContient,SAI_Date)
Comment Filtrer (rechercher) sur 3 colonnes ?
J'ai essayé
TableActiveFiltre(TABLE_BDAteliers.COL_Jour_Achat,TABLE_BDAteliers.COL_Jour_Utilisé,TABLE_BDAteliers.COL_Jour_Usé,SAI_Date)
Merci de votre aide
David |
| |
| |
| | | |
|
| | |
| |
Registered member 199 messages Popularité : +14 (16 votes) |
|
Posted on January, 22 2020 - 10:20 AM |
Bonjour,
Il existe une fonction TableTrie (ou NomTable.Trie) : https://doc.pcsoft.fr/fr-FR/?3074035&name=TableTrie Ceci étant, plutôt que de travailler directement avec ta table lié au fichier, je pense (sans voir ton code et ton analyse) qui serait plus efficient de travailler avec ta table liée à une requête paramétrée.
-- Bon développement
Pierre Devillers |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 22 2020 - 12:35 PM |
Merci Pierre Je ne vois pas. J'ai essayé
TableTrie(TABLE_BDAteliers,"COL_JOUR1","COL_JOUR2","COL_JOUR3",SAI_DateLettre)
TableActiveFiltre(TABLE_BDAteliers.COL_VILLE,filtreContient,COMBO_RECHERCHEVILLE) TableActiveFiltre(TABLE_BDAteliers.COL_DEPARTEMENT,filtreContient,COMBO_RECHERCHEDEPARTEMENT) TableActiveFiltre(TABLE_BDAteliers.COL_LIEU,filtreContient,COMBO_RECHERCHELIEU)
Les 3 dernières fonctionnent car elles recherche dans une seule colonne
Merci de l'aide |
| |
| |
| | | |
|
| | |
| |
Registered member 3,885 messages Popularité : +227 (347 votes) |
|
Posted on January, 22 2020 - 12:39 PM |
Bonjour, Les requêtes sont là pour faire des recherches multiples. e.g. :
SELECT Atelier.PK_Atelier, Atelier.Batiment, Atelier.Service FROM Atelier WHERE Atelier.Jour_Achat={pDate} OR Atelier.Jour_Utilise={pDate} OR Atelier.Jour_Use={pDate}
Il suffit de baser ton champ table sur une requête de ce type et d'initialiser le paramètre avant l'exécution et l'affichage
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 22 2020 - 9:27 PM |
Re Encore merci de l'aide ! Bon j'ai enfin réussi à créer cette requête (pas facile en étant débutant !) Rien ne fonctionne !
SELECT BD_Ateliers.ATELIER AS ATELIER, BD_Ateliers.DEPARTEMENT AS DEPARTEMENT, BD_Ateliers.VILLE AS VILLE, BD_Ateliers.BATIMENT AS BATIMENT, BD_Ateliers.SERVICE AS SERVICE, BD_Ateliers.N_JOUR1 AS N_JOUR1, BD_Ateliers.JOUR1 AS JOUR1, BD_Ateliers.N_JOUR2 AS N_JOUR2, BD_Ateliers.JOUR2 AS JOUR2, BD_Ateliers.N_JOUR3 AS N_JOUR3, BD_Ateliers.JOUR3 AS JOUR3 FROM BD_Ateliers WHERE BD_Ateliers.JOUR1 = {Param_Date_Lettre} OR BD_Ateliers.JOUR2 = {Param_Date_Lettre} OR BD_Ateliers.JOUR3 = {Param_Date_Lettre} OR BD_Ateliers.N_JOUR1 = {Param_Date_Chiffre} OR BD_Ateliers.N_JOUR2 = {Param_Date_Chiffre} OR BD_Ateliers.N_JOUR3 = {Param_Date_Chiffre}
Le code dans le bouton "Recherché"
REQ_RECHERCHE_JOUR.Param_Date_Lettre=SAI_DateLettre REQ_RECHERCHE_JOUR.Param_Date_Chiffre=SAI_DateChiffre
TableActiveFiltre(TABLE_BDAteliers.COL_DEPARTEMENT,filtreContient,COMBO_RECHERCHEDEPARTEMENT) TableActiveFiltre(TABLE_BDAteliers.COL_VILLE,filtreContient,COMBO_RECHERCHEVILLE)
TableActiveFiltre(TABLE_BDAteliers.COL_BATIMENT,filtreContient,COMBO_RECHERCHEBATIMENT) TableActiveFiltre(TABLE_BDAteliers.COL_SERVICE,filtreContient,COMBO_RECHERCHESERVICE)
TableAffiche(TABLE_BDAteliers)
Le code dans le bouton "Réinitialisé"
HRAZ(BD_Ateliers) RAZ(Vrai)
TableDésactiveFiltre(TABLE_BDAteliers.COL_JOUR1) TableDésactiveFiltre(TABLE_BDAteliers.COL_N_JOUR1) TableDésactiveFiltre(TABLE_BDAteliers.COL_JOUR2) TableDésactiveFiltre(TABLE_BDAteliers.COL_N_JOUR2) TableDésactiveFiltre(TABLE_BDAteliers.COL_JOUR3) TableDésactiveFiltre(TABLE_BDAteliers.COL_N_JOUR3) TableDésactiveFiltre(TABLE_BDAteliers.COL_DEPARTEMENT) TableDésactiveFiltre(TABLE_BDAteliers.COL_VILLE) TableDésactiveFiltre(TABLE_BDAteliers.COL_BATIMENT) TableDésactiveFiltre(TABLE_BDAteliers.COL_SERVICE) Message modified, January, 22 2020 - 9:33 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 3,885 messages Popularité : +227 (347 votes) |
|
Posted on January, 22 2020 - 10:08 PM |
Pourquoi utiliser les filtres ? La requête fait le boulot. Il suffit d'exécuter la requête avant l'affichage de la table, ou alors d'utiliser tableaffiche avec taRéExécuteRequête
-- Il y a peut être plus simple, mais, ça tourne |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 23 2020 - 2:27 PM |
Bonjour Voroltinquo
Merci de l'aide
Donc dans le bouton "Modifié" j'ai fais ceci :
REQ_RECHERCHE_JOUR.Param_Date_Lettre=SAI_DateLettre..ValeurAffichée REQ_RECHERCHE_JOUR.Param_Date_Chiffre=SAI_DateChiffre..ValeurAffichée REQ_RECHERCHE_JOUR.Param_DEPARTEMENT=COMBO_RECHERCHEDEPARTEMENT..ValeurAffichée REQ_RECHERCHE_JOUR.Param_VILLE=COMBO_RECHERCHEVILLE..ValeurAffichée REQ_RECHERCHE_JOUR.Param_BATIMENT=COMBO_RECHERCHEBATIMENT..ValeurAffichée REQ_RECHERCHE_JOUR.Param_SERVICE=COMBO_RECHERCHESERVICE..ValeurAffichée
TableAffiche(TABLE_BDAteliers,taRéExécuteRequete)
Mais ma requête ne doit pas être bonne puisqu'elle me sélectionne les "NULL"
SELECT BD_Ateliers.ATELIER AS ATELIER, BD_Ateliers.DEPARTEMENT AS DEPARTEMENT, BD_Ateliers.VILLE AS VILLE, BD_Ateliers.BATIMENT AS BATIMENT, BD_Ateliers.SERVICE AS SERVICE, BD_Ateliers.N_JOUR1 AS N_JOUR1, BD_Ateliers.JOUR1 AS JOUR1, BD_Ateliers.N_JOUR2 AS N_JOUR2, BD_Ateliers.JOUR2 AS JOUR2, BD_Ateliers.N_JOUR3 AS N_JOUR3, BD_Ateliers.JOUR3 AS JOUR3 FROM BD_Ateliers WHERE ( BD_Ateliers.JOUR1 = {Param_Date_Lettre} OR BD_Ateliers.JOUR2 = {Param_Date_Lettre} OR BD_Ateliers.JOUR3 = {Param_Date_Lettre} OR BD_Ateliers.N_JOUR1 = {Param_Date_Chiffre} OR BD_Ateliers.N_JOUR2 = {Param_Date_Chiffre} OR BD_Ateliers.N_JOUR3 = {Param_Date_Chiffre} OR BD_Ateliers.BATIMENT = {Param_BATIMENT} OR BD_Ateliers.SERVICE = {Param_SERVICE} OR BD_Ateliers.DEPARTEMENT = {Param_DEPARTEMENT} OR BD_Ateliers.VILLE = {Param_VILLE} ) AND BD_Ateliers.DEPARTEMENT is NOT Null AND BD_Ateliers.VILLE is NOT Null AND BD_Ateliers.BATIMENT is NOT Null AND BD_Ateliers.SERVICE is NOT Null AND BD_Ateliers.N_JOUR1 is NOT Null AND BD_Ateliers.JOUR1 is NOT Null AND BD_Ateliers.N_JOUR2 is NOT Null AND BD_Ateliers.JOUR2 is NOT Null AND BD_Ateliers.N_JOUR3 is NOT Null AND BD_Ateliers.JOUR3 is NOT Null AND BD_Ateliers.ATELIER is NOT Null
Et après à voir fait une recherche, comment réinitialiser la Table ?Message modified, January, 23 2020 - 2:29 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on January, 23 2020 - 2:37 PM |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 23 2020 - 3:07 PM |
Bonjour Padbrain
Je garde cette solution en mémoire.
Pour mon projet, je préfère avoir une sélection avec des combos plutôt que d'utiliser le clavier.
Merci de l'intervention
David |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on January, 23 2020 - 3:27 PM |
-- -- Jean-Jacques |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 28 2020 - 11:57 PM |
Bonjour Je reviens sur ce fil après plusieurs lectures de manuel et essai.
La Table ne se filtre pas à la sélection d'un élément de mon Combo (COMBO_DateLettre).
Exemple : Si je sélectionne "LUNDI" dans mon Combo, ma Table devrait m'afficher tous les "LUNDI" des colonnes "JOUR1" OU "JOUR2" OU "JOUR3" de ma Table En mode Test, ma requête fonctionne parfaitement.
Ou est le problème ?
Merci beaucoup de votre aide précieuse.
Ma Table est alimentée par "Contenu"==>"Accès direct"==>Source fichier"BD_Ateliers"
Le code de mon Combo :
REQ_FEUIL_RECHERCHE.Param_Jour1_Lettre=COMBO_DateLettre..Valeur REQ_FEUIL_RECHERCHE.Param_Jour2_Lettre=COMBO_DateLettre..Valeur REQ_FEUIL_RECHERCHE.Param_Jour3_Lettre=COMBO_DateLettre..Valeur HExécuteRequête(REQ_FEUIL_RECHERCHE) TableAffiche(TABLE_RECHERCHE,taRéExécuteRequete)
Le Code SQL de ma requête est :
SELECT DISTINCT BD_Ateliers.ID_Ateliers AS ID_Ateliers, BD_Ateliers.ATELIER AS ATELIER, BD_Ateliers.JOUR1 AS JOUR1, BD_Ateliers.JOUR2 AS JOUR2, BD_Ateliers.JOUR3 AS JOUR3, FROM BD_Ateliers WHERE BD_Ateliers.JOUR1 = {Param_Jour1_Lettre} OR BD_Ateliers.JOUR2 = {Param_Jour2_Lettre} OR BD_Ateliers.JOUR3 = {Param_Jour3_Lettre} ORDER BY ATELIER ASC |
| |
| |
| | | |
|
| | |
| |
Registered member 170 messages Popularité : +18 (18 votes) |
|
Posted on January, 29 2020 - 8:36 AM |
Salut,
Je simplifierai déjà le code comme suit :
REQ_FEUIL_RECHERCHE.Param_Jour_Lettre=COMBO_DateLettre..Valeur
HExécuteRequête(REQ_FEUIL_RECHERCHE) TableAffiche(TABLE_RECHERCHE,taRéExécuteRequete)
et :
SELECT DISTINCT BD_Ateliers.ID_Ateliers AS ID_Ateliers, BD_Ateliers.ATELIER AS ATELIER, BD_Ateliers.JOUR1 AS JOUR1, BD_Ateliers.JOUR2 AS JOUR2, BD_Ateliers.JOUR3 AS JOUR3, FROM BD_Ateliers WHERE BD_Ateliers.JOUR1 = {Param_Jour_Lettre} OR BD_Ateliers.JOUR2 = {Param_Jour_Lettre} OR BD_Ateliers.JOUR3 = {Param_Jour_Lettre} ORDER BY ATELIER ASC
Ensuite, dans quel évènement se trouve le code de la combo ?
Peut-être devrais-tu ajouter un tableSupprimeTout() avant le table affiche !
-- -- Jean-Jacques |
| |
| |
| | | |
|
| | |
| |
Registered member 106 messages Popularité : +1 (1 vote) |
|
Posted on January, 29 2020 - 10:52 AM |
Bonjour , personnellement j'ai suivi les conseils qu'on m'avait proposé sur la même question que toi avec ce lien : - http://carnetwindev.blogspot.com/2019/08/windev-les-combo-en-cascade.html…
En espérant que cela te sera utile , de mon coté j'ai filtré sur deux combo et fonctionnel je pourrai continué mais je n'en n'ai pas l'utilité. Il faut pensé en initialisation des combo de bien mettre la sources du combo qui filtre la le suivant etc ...
Cordialement M.PMessage modified, January, 29 2020 - 10:53 AM |
| |
| |
| | | |
|
| | |
| |
Registered member 66 messages Popularité : +0 (2 votes) |
|
Posted on January, 29 2020 - 11:08 AM |
Bonjour Maxime Merci de la source que je venais de regarder ce matin !
Bonjour Padbrain Merci pour les codes simplifiés
J'ai enfin résolu mon problème ! Déjà en alimentant ma Table sur ma requête et non sur mon fichier et en modifiant les paramètres SQL de mes Requêtes
Merci à tous pour vos aides diverses |
| |
| |
| | | |
|
| | | | |
| | |
|