PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Question sur HFILTRE, je suis un peu bloqué !
Question sur HFILTRE, je suis un peu bloqué !
Iniciado por Jack, 26,may. 2019 19:01 - 9 respuestas
Miembro registrado
55 mensajes
Publicado el 26,mayo 2019 - 19:01
Bonsoir, je suis bloqué sur un pbs simple (enfin je pense). Je ne souhaite pas utiliser une requête, et désire afficher dans une table la liste des articles appartenant à un client IDxx et nom de l'article commençant par XXX lettres.
Ex IDclient =1050, article="VIS METAL". j'ai plus de 800 000 références dans mon fichiers articles et environ 180 000 dans le fichier clients.

J'ai crée une rubrique composée IDCli+LibelleArticle … sur le fichier articles, lors du test si j'applique un filtre en utilisant le code ci-dessous :

HConstruitValClé(Customers,IDClientCustomerName,gFclients+gFLibArticle)


Dans cette ligne de code gFclients est l'ID de l'enregistrement client et gFLibArticle correspond au début de la réf (ex "VIS MET"). Rien ne s'affiche dans ma fenêtre de visu( basée sur un champ table), alors que je souhaiterai me positionner sur le premier enregistrement commencant par "VIS MET" et n'afficher que ceux dont le libellé commence par "VIS MET"

Si un de vous à une idée ? Merci d'avance
Excellent fin de dimanche
Cdlt
Cyril
Miembro registrado
2.321 mensajes
Publicado el 27,mayo 2019 - 09:15
Bonjour,

Avez-vous bien lu la documentation ?
https://doc.pcsoft.fr/fr-FR/index.awp?3044258
HConstruitValClé(Customers, IDClientCustomerName, gFclients, gFLibArticle)

Où est le code du filtre ?

--
Bon dev,
Jean-Pierre
Miembro registrado
55 mensajes
Publicado el 27,mayo 2019 - 09:19
Bonjour Jean-Pierre
merci de ce retour, et bien justement c'est sur le code du filtre que je "bloque", malgré la lecture de la doc ou les quelques exemples trouvés sur le forum.
Je ne vois vas pas comment constituer ladite clé
Merci
Cdlt
Cyril
Miembro registrado
4.362 mensajes
Publicado el 27,mayo 2019 - 10:02
Bonjour,
Ce serait certainement plus facile avec une requête de type "LIKE" ("commence par" dans l'éditeur de requêtes.)

--
Il y a peut être plus simple, mais, ça tourne
Miembro registrado
55 mensajes
Publicado el 27,mayo 2019 - 10:23
Bonjour Voroltinquo
Merci, j'avais envisagé une requête type LIKE en SQL,, mais j'aurai voulu avoir l'avis des gourous WinDev (nous commençons à porter des applications #C sur WinDev) sur les options type Hfiltre et/ou clé composée, car cela me semblait possible...
Si quelqu'un à 3 ou 4 lignes de code avec ces fonctions pour m'aiguiller ...
Merci
Miembro registrado
2.321 mensajes
Publicado el 27,mayo 2019 - 11:08
Rebonjour Cyril,

Désolé, tu as l'air de savoir de quoi tu parles mais je ne comprends pas.
Je te demande le code de ton filtre et tu réponds HConstruitValClé qui n'est que la construction de la clé.
Comme le montrent les exemples :
HFiltre(Client, NomPrénom, ...
HConstruitValClé(Client, NomPrénom, "Moulin" + hValMin), ...
HConstruitValClé(Client, NomPrénom, "Moulin" + hValMax))


--
Bon dev,
Jean-Pierre
Miembro registrado
55 mensajes
Publicado el 27,mayo 2019 - 11:16
Re bonjour
Merci !! A la lecture de ta réponse, je pense comprendre ou est mon erreur ....
Il faut donc d'abord faire un filtre puis utiliser l'instruction HconstruitValClé ?
Voici le code de ma ligne Hconstruit.....
HConstruitValClé(Customers,IDClientArticleName,gFclients+gFLibArticle)

Customers est le nom de mon fichier dans ma base
IDClientCustumerName est le nom de la clé composée dans l'analyse : ID du client + Libellé du nom de l'article
gFclients = ID clients passé en paramètre
gFlibArticle = chaine de caractère venant d'un champs de saisie, ex "VIS MET"

J'ai déduit cette ligne de ma compréhension (je pense erronée) de la doc ... Quel filtre dois-je appliquer avant la construction de la clé ?
Merci !!
Publicado el 28,mayo 2019 - 15:02
Bonjour Cyril,

pas certain également d'avoir saisi l'entier du problème mais je me
permet de reprendre un extrait de l'aide sur HFILRE dan lequel on
remarque qu'on créé une clé de parcours pour l'utiliser ensuite pour le
/ lors du parcours des données filtrées.

La syntaxe de la création de la clé peut être complexe mais permet
beaucoup de chose.

Bonne suite !

Fabrice

// Filtre simple avec une condition :
// Rechercher les clients d'une ville

CléParcours est une chaîne
maville est une chaîne

maville = "MONTPELLIER"
CléParcours = HFiltre(Client, "VILLE='" + maville + "'")
HLitPremier(Client, CléParcours)
TANTQUE HEnDehors() = Faux
// Traitement de l'enregistrement
...
HLitSuivant(Client, CléParcours)
FIN
// Annule le filtre
HDésactiveFiltre(Client)


Le 26.05.2019 à 17:01, cyril a écrit :
Bonsoir, je suis bloqué sur un pbs simple (enfin je pense). Je ne
souhaite pas utiliser une requête, et désire afficher dans une table la
liste des articles appartenant à un  client IDxx et nom de l'article
commençant par XXX lettres.
Ex IDclient =1050, article="VIS METAL". j'ai plus de 800 000 références
dans mon fichiers articles et environ 180 000 dans le fichier clients.

J'ai crée une rubrique composée IDCli+LibelleArticle … sur le fichier
articles, lors du test si j'applique un filtre en utilisant le code
ci-dessous :

HConstruitValClé(Customers,IDClientCustomerName,gFclients+gFLibArticle)


Dans cette ligne de code gFclients est l'ID de l'enregistrement client
et gFLibArticle correspond au début de la réf (ex "VIS MET"). Rien ne
s'affiche dans ma fenêtre de visu( basée sur un champ table), alors que
je souhaiterai me positionner sur le premier enregistrement commencant
par "VIS MET" et n'afficher que ceux dont le libellé commence par "VIS MET"

Si un de vous à une idée ? Merci d'avance
Excellent fin de dimanche
Cdlt
Cyril


--

Fabrice M.
-------------------------------------
Publicado el 28,mayo 2019 - 18:04
Bonjour,

en fait c'est ça que tu voudrais faire :

HFiltre(Customers, IDClientCustomerName, [gFclients, gFLibArticle + hMinVal], [gFclients, gFLibArticle + hMaxVal])
HLitPremier(Customers, IDClientCustomerName)
TANTQUE PAS HEnDehors(Customers)
// Traitement de l'enregistrement
HLitSuivant(Customers, IDClientCustomerName)
FIN


Par contre tu dis que tu as créé la clé composée sur le fichier article alors que dans ton exemple ton fichier s'appelle Customers ?
De plus la clé composée contient IDClient + CustomerName ? Alors qu'elle est sensée contenir IDClient + LibelléArticle d'après ce que tu dis...
Miembro registrado
55 mensajes
Publicado el 28,mayo 2019 - 21:04
Bonsoir J. Fernandez
Exactement !! Merci 1000 fois
Excellente soirée
Cdlt
Cyril