PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Aide sur Filtre
Aide sur Filtre
Débuté par dpdousset, 29 déc. 2004 16:27 - 20 réponses
Posté le 29 décembre 2004 - 16:27
Bonjour à tous,

Voici mon prob (je débute et excusez moi si ma question est nul).

J'ai une table Personnel qui s'affiche dans un élément Table. Je désire filtrer mes salariés selon si il sont en activité - sortie ou tous les salariés.

J'ai mis sur ma forme un selecteur avec 3 boutons et j'ai mis le code suivant :

SELON Sélecteur1
CAS 1
Table = Personnel.HorsEffectif = Vrai
CAS 2
Table = Personnel.HorsEffectif= Faux
CAS 3
Table = Personnel.HorsEffectif= ""
FIN
Mais cela ne fonctionne pas.

Si quelqu'un pouvait m'aider SVP

Merci

Pascal
Posté le 29 décembre 2004 - 16:35
Pascal Dousset a formulé ce mercredi :

Bonjour à tous,

Voici mon prob (je débute et excusez moi si ma question est nul).

J'ai une table Personnel qui s'affiche dans un élément Table. Je désire filtrer mes salariés selon si il sont en activité - sortie ou tous les salariés.

J'ai mis sur ma forme un selecteur avec 3 boutons et j'ai mis le code suivant :

SELON Sélecteur1
CAS 1
Table = Personnel.HorsEffectif = Vrai
CAS 2
Table = Personnel.HorsEffectif= Faux
CAS 3
Table = Personnel.HorsEffectif= ""
FIN
Mais cela ne fonctionne pas.

Si quelqu'un pouvait m'aider SVP

Merci

Pascal


Bonjour,
Quelle action veux tu effectuer par ces instructions?
Table = Personnel.HorsEffectif = Vrai
CAS 2
Table = Personnel.HorsEffectif= Faux
CAS 3
Table = Personnel.HorsEffectif= ""
Parce que ce n'est pas des affectations valide

--
Pascal
Posté le 29 décembre 2004 - 17:47
Je désire affiché selon ma selection soit les salarié en activités, soit les salariés qui sont parties soit l'ensemble de ma base personnel.

J'ai essayé ça aussi


SELON Sélecteur1
CAS 1
Table..Filtre = Personnel.HorsEffectif = Vrai //Affiche les salariés en activités
CAS 2
Table..Filtre = Personnel.HorsEffectif= Faux // Affiche les salariés sorties
CAS 3
Table..Filtre = Personnel.HorsEffectif= "" // Affiche l'ensemble des salariés

Pascal
Posté le 29 décembre 2004 - 18:10
Il se trouve que Pascal Dousset a formulé :

Je désire affiché selon ma selection soit les salarié en activités, soit les salariés qui sont parties soit l'ensemble de ma base personnel.

J'ai essayé ça aussi


SELON Sélecteur1
CAS 1
Table..Filtre = Personnel.HorsEffectif = Vrai //Affiche les salariés en activités
CAS 2
Table..Filtre = Personnel.HorsEffectif= Faux // Affiche les salariés sorties
CAS 3
Table..Filtre = Personnel.HorsEffectif= "" // Affiche l'ensemble des salariés

Pascal


Si c'est une table fichier il faut faire
SELON Sélecteur1
CAS 1
//Table..Filtre = Personnel.HorsEffectif = Vrai //Affiche les salariés en activités
HFiltre(Personnel,MaCleParcours,BorneMini,BorneMaxi,"HorsEffectif = 1")
CAS 2
//Table..Filtre = Personnel.HorsEffectif= Faux // Affiche les salariés sorties
HFiltre(Personnel,MaCleParcours,BorneMini,BorneMaxi,"HorsEffectif = 0")
CAS 3
//Table..Filtre = Personnel.HorsEffectif= "" // Affiche l'ensemble des salariés
HDesactiveFiltre(Personnel)
FIN
executetraitement(TABLE,trtInit)

--
Pascal
Posté le 29 décembre 2004 - 18:15
Bonjour,

Tu dois créer un filtre suivant l'optio sélectionnée sur ton sélecteur:
Pour tes personnes en activités essaies ça:
Tablesupprimetout(Table)
hfiltre("PERSONNEL","ETAT=HorsEffectif")
HlitPremier("PERSONNEL")
TANTQUE pas HEnDehors()
Tableajoute(Table,<champ1>+TAB+<champ2>+TAB+...+TAB+<champn>)
HlitSuivant("PERSONNEL")
Fin

Pour chaque cas de ton sélecteur tu dois remplir ta table suivant le critère du filtre.
Donc ça va te faire 2 filtres à faire car ta dernière option affiche l'ensemble de ton fichier.
Voilà.

Tiens-moi au courant.

Bon Dev.
Nico.
Posté le 29 décembre 2004 - 19:01
Merci Pascal pour ta réponse, mais cela ne fonctionne pas quand je clique sur mon selecteur ma table efface (pas supprime) les enregistrements.

En revanche tu me mets "BorneMini,BorneMaxi" la je n'ai pas de données à mettre donc je les ai effacés!!!!!!



Je test dés maintenant la solution suivante.

Pascal
Posté le 29 décembre 2004 - 19:02
Je test la réponse de Ocin

Pour info ma table est une table HF.

Pascal
Posté le 29 décembre 2004 - 19:09
Ocin en regardant ton texte, je ne comprend pas ou j'indique que si dans ma table personnel le champ Horseffectif a la valeur vrai ou faux j'affiche tel ou tel liste de salariés???

Pascal
Posté le 29 décembre 2004 - 19:45
Pascal Dousset a émis l'idée suivante :

Merci Pascal pour ta réponse, mais cela ne fonctionne pas quand je clique sur mon selecteur ma table efface (pas supprime) les enregistrements.

En revanche tu me mets "BorneMini,BorneMaxi" la je n'ai pas de données à mettre donc je les ai effacés!!!!!!



Je test dés maintenant la solution suivante.

Pascal


Erreur de ma part il faut utiliser TableAffiche pour rafraichir la table. J'ai fait le test sur un fichier d'un de mes programmes. Le fichier est CONTRATS et
la clé de parcours NUDEV qui est alpha de 9 caractères.

Dans le code de modification du sélecteur j'ai mis le code suivant:
SELON MoiMême
CAS 1 : HFiltre(CONTRAT,NUDEV,"","zzzzzzzzz","ACCEPTE='1'")
CAS 2 : HFiltre(CONTRAT,NUDEV,"","zzzzzzzzz","ACCEPTE<>'1'")
CAS 3 : HDésactiveFiltre(CONTRAT)

FIN
TableAffiche(Table_CONTRAT,taInit)

Le champ ACCEPTE est un champ texte c'est pour ça que j'ai 1 entre des apostrophes. Les valeurs "" et "zzzzzzzz" sont les bornes mini et maxi de parcours de
mon fichier.

dans l'init du sélecteur je mets la valeur initiale et j'exécute le code de modif pour que les enregistrements affichés correspondent à l&a position du
sélecteur.
Bonne soirée.

--
Pascal
Posté le 29 décembre 2004 - 19:53
Excuses moi mais je n'avais pas saisi que Horseffectif était une rubrique de ton fichier,
alors essaies cela:

Tablesupprimetout(Table)
hfiltre("PERSONNEL","HorsEffectif=Vrai")
HlitPremier("PERSONNEL")
TANTQUE pas HEnDehors()
Tableajoute(Table,<champ1>+TAB+<champ2>+TAB+...+TAB+&l
t;champn>)
HlitSuivant("PERSONNEL")
Fin

Un conseil, mets ta table en remplissage par programmation c'est assez simple à gérer avec code d'initialisation que tu appelles à chaque interaction sur la table.

Bon dev.
Nico.
Posté le 30 décembre 2004 - 10:48
Remplace "" par caract(0) et "zzzzzzzz" par caract(255), et vrai et faux par 1 et 0, et tu verras que ça marche.

IDPersonnel est un entier, pas une chaine.
Posté le 30 décembre 2004 - 10:48
Remplace "" par caract(0) et "zzzzzzzz" par caract(255), et vrai et faux par 1 et 0, et tu verras que ça marche.

IDPersonnel est un entier, pas une chaine.
Posté le 30 décembre 2004 - 11:30
Bonjour,

Dés mon arrivée ce matin j'ai testé les deux solution de vos code (Pascal et Nico) malheureusement cela ne marche pas.

Je m'explique lorsque je selectionne Actif la table ce vide, lorsque je selectionne sortie la table ce vide également enfin dans le code de Pascal, lorsque je clique sur TOUS j'ai l'ensemble de mes enregistrement (normal puisque l'on désactive le filtre), en revanche pour Nico à chaque selection ma table ce vide.

PAscal
Posté le 30 décembre 2004 - 11:54
Pascal Dousset avait soumis l'idée :
Bonjour,

Dés mon arrivée ce matin j'ai testé les deux solution de vos code (Pascal et Nico) malheureusement cela ne marche pas.

Je m'explique lorsque je selectionne Actif la table ce vide, lorsque je selectionne sortie la table ce vide également enfin dans le code de Pascal, lorsque je clique
sur TOUS j'ai l'ensemble de mes enregistrement (normal puisque l'on désactive le filtre), en revanche pour Nico à chaque selection ma table ce vide.

PAscal


Bonjour,
il faut faire attention dans la condition de sélection au type de données stockées dans HorsEffectif. Si c'est un numérique ou un booleen il faut mettre
"HorsEffectif = 0". Si c'est un type caractère ou texte il faut mettre "HorsEffectif = '1' ". c'est la raison pour laquelle tu n'as rien lorsque tu fais une
sélection autre que tous.

--
Pascal
Posté le 30 décembre 2004 - 12:37
Bonjour,

Cela je l'ai bien compris (j'ai une case à cocher, donc du bouleen) doncj'ai mon code qui ressemble à cela.

SELON MoiMême
CAS 1 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif='Vrai'")
CAS 2 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif='Faux'")
CAS 3 : HDésactiveFiltre(Personnel)
FIN
TableAffiche(Table,taInit)



Pascal
Posté le 30 décembre 2004 - 12:46
Bonjour,

C'est ce que je t'ai dit, mes solutions sont utilisables uniquement sur des tables remplies par programmation. Par contre ce qui est étrange c'est que la solution donnée par Pascal devrait fonctionner sur des tables fichier. Bizarre, je vais testé tout cela...

Nico
Posté le 30 décembre 2004 - 12:53
Pascal Dousset avait écrit le 30/12/2004 :

Bonjour,

Cela je l'ai bien compris (j'ai une case à cocher, donc du bouleen) doncj'ai mon code qui ressemble à cela.

SELON MoiMême
CAS 1 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif='Vrai'")
CAS 2 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif='Faux'")
CAS 3 : HDésactiveFiltre(Personnel)
FIN
TableAffiche(Table,taInit)



Pascal


il faut faire
CAS 1 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif = 1 ")
CAS 2 : HFiltre(Personnel,IDPersonnel,"","zzzzzzzzz","HorsEffectif = 0 ")

--
Pascal
Posté le 30 décembre 2004 - 16:11
A nouveau moi, désolé Pascal mais cela ne fonctionne pas ma table ce vide.

Sous Delphi je faisais

TblPerso.Filter:='Actif = Faux';
TblPerso.Filtered := True;

Actif étant le nom de ma case à cocher

Ne faut il pas activer le filtre à quelque part????



Pascal
Posté le 30 décembre 2004 - 16:59
Dans son message précédent, Pascal Dousset a écrit :
A nouveau moi, désolé Pascal mais cela ne fonctionne pas ma table ce vide.

Sous Delphi je faisais

TblPerso.Filter:='Actif = Faux';
TblPerso.Filtered := True;

Actif étant le nom de ma case à cocher

Ne faut il pas activer le filtre à quelque part????



Pascal


Curieux. J'ai fait un test et cela marchait. Dans la description de la table, sous l'onglet contenu, j'avais l'option 'Utiliser la foncton HFiltre pour
parcourir le fichier' qui était cochée. Est-ce ton cas? Si non tu peux éventuellement m'envoyer en privé la fenetre et le fichier (avec le .wdd) afin que je
regarde.

Voilà.. pour l'adresse ne conserver que le prénom avant l'arobace

--
Pascal
Posté le 30 décembre 2004 - 17:47
Pascal tu as oublié de me mettre ton adresse
Posté le 30 décembre 2004 - 18:07
Pascal Dousset a pensé très fort :
> Pascal tu as oublié de me mettre ton adresse

Elle est dans l'entete si tu as lecteur de news.
N0.pascal.SPAM@efpe.biz ^^

--
Pascal