PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → effectuer plusieurs filtres sur une table
effectuer plusieurs filtres sur une table
Iniciado por m1b.software, 18,feb. 2007 23:54 - 4 respuestas
Publicado el 18,febrero 2007 - 23:54
Bonjour à tous,

Je voulais vous demander

1) J'aimerai faire plusieurs filtres sur la même table ( voir code ci-dessous ) en fait je filtre par ex. numéro du document, montant, statut, etc...

Mais je pense que je fais pas juste le filtre multiple, car si je fait un filtre de manière individuelle pour chacun de ces champs, ça marche très bien. Seulement quand je veux mettre plusieurs paramètres pour ce filtre, alors ca ne marche plus. ( certainement que je n'ai pas fait correctement les filtres ci-dessous) Pouvez-vous m'indiquez ce que je fais faux ?


2) Le filtre sur les dates, se passe comme pour les autres champ classiques ? Ou il y a quelque chose de spécifique à savoir pour que ça fonctionne ?

encore merci

Marc V


// FILTRE PAR NUMERO DE DOC
sRubCléParcours_no_facture est une chaîne
// On active le filtre
sRubCléParcours_no_facture = HFiltre(T_factures, "fac_numero=" champ_no_facture "")

// Parcours des enregistrements filtrés
HLitPremier(T_factures, sRubCléParcours_no_facture)
TANTQUE PAS HEnDehors()
HLitSuivant(T_factures, sRubCléParcours_no_facture)
FIN


// FILTRE PAR MONTANT
sRubCléParcours_montant_facture est une chaîne
// On active le filtre
sRubCléParcours_montant_facture = HFiltre(T_factures, "fac_montant_total=" champ_montant "")

// Parcours des enregistrements filtrés
HLitPremier(T_factures, sRubCléParcours_montant_facture)
TANTQUE PAS HEnDehors()
HLitSuivant(T_factures, sRubCléParcours_montant_facture)
FIN

// FILTRE PAR DATE
sRubCléParcours_date est une chaîne
// On active le filtre
sRubCléParcours_date = HFiltre(T_factures, "fac_date=" champ_date "")

// Parcours des enregistrements filtrés
HLitPremier(T_factures, sRubCléParcours_date)
TANTQUE PAS HEnDehors()
HLitSuivant(T_factures, sRubCléParcours_date)
FIN


// FILTRE PAR STATUT DE DOCUMENT
sRubCléParcours_statut_doc est une chaîne
// On active le filtre
sRubCléParcours_statut_doc = HFiltre(T_factures, "fac_statut=" COMBO_factures_statut "")

// Parcours des enregistrements filtrés
HLitPremier(T_factures, sRubCléParcours_statut_doc)
TANTQUE PAS HEnDehors()
HLitSuivant(T_factures, sRubCléParcours_statut_doc)
FIN

// REFRESH LA TABLE
TableAffiche(FEN_factures.TABLE_factures)
Ferme()
Publicado el 19,febrero 2007 - 09:53
Bonjour,

La mise en place d'un filtre remplace le filtre précédent. En procédant comme tu fais, seul le dernier filtre est pris en compte.

Pour obtenir ce que tu veux, utilise une requête et base ta table sur cette requête. En t'aidant de l'asistant, ce n'est pas difficle.

Hubert
Publicado el 20,febrero 2007 - 08:06
Hello, finalement j'ai compris comment faire le filtre multiple ( voici un exemple pour 2 champs )



SI champ_no_facture <> 0 ET champ_montant <> 0 ALORS
// FILTRE PAR NUMERO DE DOC ET MONTANT TOTAL
sRubCléParcours_no_facture_et_montant est une chaîne
// On active le filtre

sRubCléParcours_no_facture_et_montant = HFiltre(T_factures, "fac_numero=' " champ_no_facture "' et fac_montant_total='" champ_montant "'")

// Parcours des enregistrements filtrés
HLitPremier(T_factures, sRubCléParcours_no_facture_et_montant)
TANTQUE PAS HEnDehors()
HLitSuivant(T_factures, sRubCléParcours_no_facture_et_montant)
FIN
FIN

Voila voila..

Bonne soirée et bon DEV.
Publicado el 01,marzo 2007 - 18:56
Une solution simple à créer un champ composé avec tous les champs dans l'ordre du filtre.
Ensuite créer une variable de recherche en concatenant les valeurs des cahmps.

Bon Dev...
Miembro registrado
1 mensaje
Publicado el 24,julio 2019 - 11:09
Il est aussi possible de faire un filtrage au niveau de la table.

Pour cela, cliquer en bas de la fenêtre de code de la table sur 'Ajouter d'autres événement à TABLE_XXX'.

En ajoutant l'événement 'Filtrage des enregistrements de TABLE_XXX', il est possible de filtrer en renvoyant vrai ou faux. L'exemple de la documentation (https://doc.pcsoft.fr/fr-FR/?1013189) est le suivant :

// -- Filtrage des enregistrements
// Affiche uniquement les clients dont commandes sont supérieures à 3000 euros
SI Commande.TotalTTC >=3000 ALORS
RENVOYER Vrai
SINON
RENVOYER Faux
FIN

NB : bien noter que l'on travaille sur l'enregistrement (fichier Commande) et non sur les colonnes de la table dans ce code