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

Le
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é !
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Yves Bourhis
Le #18993631
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 ?


JeAn-PhI
Le #18993721
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
Yves Bourhis
Le #18994131
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).
JeAn-PhI
Le #18994901
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
Yves Bourhis
Le #18995021
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.
JeAn-PhI
Le #18995301
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
Publicité
Poster une réponse
Anonyme