Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

WD12 - Filtre sur une table fichier en fonction d'une zone mémoire

6 réponses
Avatar
Yves Bourhis
Bonjour,

j'ai une fenêtre permettant à mes utilisateurs de définir leurs propres critères de sélection dans une table d'étudiants (telle moyenne comprise entre telle valeur et telle valeur, telle option suivie ou pas, ...) : comment puis-je afficher la table qu'avec les étudiants sélectionnés ?
Je peux parfaitement remplir une zone mémoire (je m'en sers d'ailleurs pour lancer l'édition de quelques états), mais je ne vois pas comment "filtrer" la table... est-ce possible ?

En vous remerciant par avance de vos éclaircissement, je vous souhaite un bon weekend ensoleillé !

6 réponses

Avatar
Yves Bourhis
Bonjour,

n'ayant pas eu de réponses, je vous envoie ma méthode pour contourner le problème... si ça peut servir à quelqu'un !

Je mets 2 plans dans ma fenêtre : le premier pour que l'utilisateur définissent les conditions de sélection et le 2ème pour afficher la table "fichier" sur laquelle porte cette sélection.
Lorsque l'utilisateur valide le premier plan, je remplis ma zone mémoire, puis je la parcoure pour sélectionner les lignes correspondantes dans la table "fichier", et enfin j'affiche cette dernière en passant au 2ème plan.
Je peux alors n'exporter que les lignes sélectionnées vers un tableur...

C'est un peu lourd aussi je suis toujours preneur d'une solution plus élégante !

Cordialement.

Yves Bourhis a écrit :
j'ai une fenêtre permettant à mes utilisateurs de définir leurs propres
critères de sélection dans une table d'étudiants (telle moyenne comprise
entre telle valeur et telle valeur, telle option suivie ou pas, ...) :
comment puis-je afficher la table qu'avec les étudiants sélectionnés ?
Je peux parfaitement remplir une zone mémoire (je m'en sers d'ailleurs
pour lancer l'édition de quelques états), mais je ne vois pas comment
"filtrer" la table... est-ce possible ?


Avatar
JeAn-PhI
Dans son message précédent, Yves Bourhis a écrit :
Bonjour,

n'ayant pas eu de réponses, je vous envoie ma méthode pour contourner le
problème... si ça peut servir à quelqu'un !

Je mets 2 plans dans ma fenêtre : le premier pour que l'utilisateur
définissent les conditions de sélection et le 2ème pour afficher la table
"fichier" sur laquelle porte cette sélection.
Lorsque l'utilisateur valide le premier plan, je remplis ma zone mémoire,
puis je la parcoure pour sélectionner les lignes correspondantes dans la
table "fichier", et enfin j'affiche cette dernière en passant au 2ème plan.
Je peux alors n'exporter que les lignes sélectionnées vers un tableur...

C'est un peu lourd aussi je suis toujours preneur d'une solution plus
élégante !

Cordialement.

Yves Bourhis a écrit :
j'ai une fenêtre permettant à mes utilisateurs de définir leurs propres
critères de sélection dans une table d'étudiants (telle moyenne comprise
entre telle valeur et telle valeur, telle option suivie ou pas, ...) :
comment puis-je afficher la table qu'avec les étudiants sélectionnés ?
Je peux parfaitement remplir une zone mémoire (je m'en sers d'ailleurs pour
lancer l'édition de quelques états), mais je ne vois pas comment "filtrer"
la table... est-ce possible ?





HFiltre(MonFichierHF,ConditionDeSelection)
avec :
ConditionDeSelection = "(MaRubNote between 12 and 15) and (MonOption =
1)"
ou passer par une requête

--
Cordialement JeAn-PhI
Avatar
Yves Bourhis
JeAn-PhI a écrit :
Dans son message précédent, Yves Bourhis a écrit :
HFiltre(MonFichierHF,ConditionDeSelection)
avec :
ConditionDeSelection = "(MaRubNote between 12 and 15) and (MonOption = 1)"
ou passer par une requête



Ca ne fonctionne pas car la condition de sélection dépend des choix de l'utilisateur est peut être très complexe...
J'ai donc essayé ConditionDeSelection = "MemRecherche("maZoneMem",hnumenr()) > 0" mais windev ne gère pas ce genre de chose (je ne me rappelle plus exactement du message d'erreur).
Avatar
JeAn-PhI
Yves Bourhis a pensé très fort :
JeAn-PhI a écrit :
Dans son message précédent, Yves Bourhis a écrit :
HFiltre(MonFichierHF,ConditionDeSelection)
avec :
ConditionDeSelection = "(MaRubNote between 12 and 15) and (MonOption = 1)"
ou passer par une requête



Ca ne fonctionne pas car la condition de sélection dépend des choix de
l'utilisateur est peut être très complexe...
J'ai donc essayé ConditionDeSelection = "MemRecherche("maZoneMem",hnumenr()) >
0" mais windev ne gère pas ce genre de chose (je ne me rappelle plus
exactement du message d'erreur).



il faut la construire la condition en fonction des choix des
utilisateurs

--
Cordialement JeAn-PhI
Avatar
Yves Bourhis
JeAn-PhI a écrit :
il faut la construire la condition en fonction des choix des utilisateurs



Malheureusement la condition en question dépend, pour chaque enregistrement, de recherche dans plusieurs autres tables reliées, d'ou le passage par une zone mémoire...

Bon week-end.
Avatar
JeAn-PhI
Yves Bourhis a émis l'idée suivante :
JeAn-PhI a écrit :
il faut la construire la condition en fonction des choix des utilisateurs



Malheureusement la condition en question dépend, pour chaque enregistrement,
de recherche dans plusieurs autres tables reliées, d'ou le passage par une
zone mémoire...

Bon week-end.



alors requête

szReq est chaine
szTable est chaine
szCond est chaine

szReq = [
select ...,...,....
from %1
%2
]

construire szTable en fonction des conditions
ex : szTable = "T1 inner join T2 on T1.id = T2.id"

construire szCond en fonction des critères
ex : szCond = "Rub = 0"

puis :

HExecuteRequeteSQL(MaVarSourceDeDonnee,ChaineConstruit(szReq,szTable,szCond)
...
etc.

--
Cordialement JeAn-PhI