PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → [WD8] PB de hlitrecherchepremier AU SECOURS
[WD8] PB de hlitrecherchepremier AU SECOURS
Débuté par sandrine.legrix, 15 déc. 2004 12:29 - 8 réponses
Posté le 15 décembre 2004 - 12:29
Bonjour,

mon problème va paraître idiot, mais je n'arrive plus à comprendre pourquoi.

voila un fichier article qui contient une rubrique chaîne fournisseur ( code
comptable) sur 6
et une rubrique article_tri qui est une chaîne de 80 caractères

j'ai une besoin de faire pour une recherche plus pratique une clé compose
Fournisseur+article_tri.

dans une fenêtre je tape dans une champ " FOURNIS_S" mon fournisseur et je
dois faire apparaître le premier article du fournisseur et le dernier
article de ce fournisseur par ordre article_tri.

donc j'ai fait :

hlitrecherchepremier(article,fournisarticle_tri,hconstruitvalcle(article,fou
rnisarticle_tri,fournis_s,complete(article.article_tri,dimension(ar.article_
tri),caract(0))
il me le trouve

après je fais
hlitrecherchedernier(article,fournisarticle_tri,hconstruitvalcle(article,fou
rnisarticle_tri,fournis_s,complete(article.article_tri,dimension(ar.article_
tri),caract(0))
ne me le trouve pas
j'ai essayé aussi
hlitrecherchedernier(article,fournisarticle_tri,hconstruitvalcle(article,fou
rnisarticle_tri,fournis_s,hvalmax))
pareil
rien n'y fait.
en plus si je fait un stop dans le code

je vois que hendehors=faux, htrouve=faux herreur=0, herreurinfo=""
il semblerait que c'est un problème de positionnement dans le fichier donc
j'ai rajouté hannulerecherche après le hlitrecherchepremier mais toujours
rien.
si quelqu'un me venir à mon secours !!!!!!!!!!!!!!!!


merci


--
Sandrine Legrix
Sandrine.legrix@p-s-i.com
PSI
Posté le 15 décembre 2004 - 14:36
Essayes ceci :

cle est chaine

cle=hconstruitvalcle(article,fournisarticle_tri,fournis_s) // s'arrêter au code fournisseur

hfiltre(article,fournisarticle_tri,cle+hvalmin,cle+hvalmax)

hlitpremier(article,fournisarticle_tri)
// récupère le premier article

hlitdernier(article,fournisarticle_tri)
// récupère le dernier article

hdesactivefiltre(article)

A+
Posté le 15 décembre 2004 - 15:15
Bonjour,

J'ai essayé avec un hfiltre seulement cela devient tres long, le fichier
fait 300Mo et la recherche devient trop longue.

mais bon si je n'ai pas de solution....

ce qui m'étonne, c'est que dans ce fichier j'ai une autre cle composé
fournis+article.
et avant cela fonctionnait mais mon pb, c'etait que je n'avais pas le
premier et le dernier article.



--
Sandrine Legrix
Sandrine.legrix@p-s-i.com
PSI


"Sandrine Legrix" <sandrine.legrix@p-s-i.com> a écrit dans le message de
news: 41c00915$1@news.pcsoft.fr...

Bonjour,

mon problème va paraître idiot, mais je n'arrive plus à comprendre

pourquoi.

voila un fichier article qui contient une rubrique chaîne fournisseur (

code
comptable) sur 6
et une rubrique article_tri qui est une chaîne de 80 caractères

j'ai une besoin de faire pour une recherche plus pratique une clé compose
Fournisseur+article_tri.

dans une fenêtre je tape dans une champ " FOURNIS_S" mon fournisseur et je
dois faire apparaître le premier article du fournisseur et le dernier
article de ce fournisseur par ordre article_tri.

donc j'ai fait :


hlitrecherchepremier(article,fournisarticle_tri,hconstruitvalcle(article,fou
>
rnisarticle_tri,fournis_s,complete(article.article_tri,dimension(ar.article_
tri),caract(0))
il me le trouve

après je fais

hlitrecherchedernier(article,fournisarticle_tri,hconstruitvalcle(article,fou
>
rnisarticle_tri,fournis_s,complete(article.article_tri,dimension(ar.article_
tri),caract(0))
ne me le trouve pas
j'ai essayé aussi

hlitrecherchedernier(article,fournisarticle_tri,hconstruitvalcle(article,fou
rnisarticle_tri,fournis_s,hvalmax))
pareil
rien n'y fait.
en plus si je fait un stop dans le code

je vois que hendehors=faux, htrouve=faux herreur=0, herreurinfo=""
il semblerait que c'est un problème de positionnement dans le fichier donc
j'ai rajouté hannulerecherche après le hlitrecherchepremier mais toujours
rien.
si quelqu'un me venir à mon secours !!!!!!!!!!!!!!!!


merci


--
Sandrine Legrix
Sandrine.legrix@p-s-i.com
PSI


Posté le 15 décembre 2004 - 16:08
en principe avec le filtre c'est très rapide et très efficace quand on veut récupérer le dernier enregistrement
Nous nous en servons pour rechercher le dernier tarif en vigueur et ça marche très bien
Si tu pédales dans la semoule envoie un bout de code ainsi que la description réelle de ta clé

A+
Posté le 15 décembre 2004 - 17:06
en fait, j'ai une fenetre avec 3 champs

articledebut
articlefin
fournisseur1

l'utilisateur peut rentrer un article de debut et de fin.

si l'utilisateur selectionne un fournisseur, je verifie dans un premier
temps si l'article debut appartient a ce fournisseur.

hlitrecherche(article,fournisarticle_tri,hconstruitvalcle(article,fournisart
icle_tri,fournisseur1,articledebut)
si cette article n'appartient pas à ce fournisseur, alors je recherche le
premier article de ce fournisseur
hlitrecherchepremier(article,fournisarticle_tri,hconstruitvalcle(article,fou
rnisarticle_tri,fournisseur1,hvalmin)
mais bizarrement si je teste le htrouve il ne le trouve pas par contre si je
ne teste pas htrouve il est capable de me retourner correctement le premier
article de ce fournisseur.
en plus je suis obligé de tester le htrouve car il y a des fournisseurs qui
non pas article geré.

imaginons deux articles:

fournisseur sur 6 caracteres
article_tri sur 80 caracteres
article sur 40 caracteres

fournisseurarticle sur chaine binaire sur 46 caracteres
fournisseurarticle_tri sur chaine binaire sur 86 caracteres



article1 :
fournisseur@0470
article = CED1015TRESS
article_triÎD001015TRESS
fournisseurarticle@0470,CED1015TRESS
fournisseurarticle_tri@0470,CED001015TRESS


article2:
fournisseur@0470
articleÎD916SAS
article_triÎD000916SAS
fournisseurarticle@0470,CED916SAS
fournisseurarticle_tri@0470,CED000916SAS


si je hlitrechechepremier sur fournisseurarticle il me renvoie article1
si je hlitrecherchepremier fournisseurarticle_tri il me renvoi article 2





j'ai essayé de le faire avec un hgenerique mais rien non plus.




--
Sandrine Legrix
Sandrine.legrix@p-s-i.com
PSI
Posté le 15 décembre 2004 - 18:28
c'est bon,
j'abandonne, je fais un hfiltre mais je ne comprends pas pourquoi ca ne
fonctionne pas.

merci tout de meme de ton aide


--
Sandrine
sandrine.legrix@p-s-i.com
Posté le 16 décembre 2004 - 09:53
c'est normal
l'article CED101... est bien avant l'article CED916...
par contre, l'article_tri CED00101... est bien après l'article_tri CED000916
peut-être as-tu mis un zéro de trop à l'article_tri CED000916... ce serait pas plutôt CED00916... ????

A+
Posté le 16 décembre 2004 - 11:15
Bonjour,

Non, Non c'est bien ça.

c'est assez bizarre, je le conviens, mais c'est bien ça.

et si je fais une recherche par rapport au code article_tri, il doit me le
faire sur le code article_tri.


merci tout de même de t'être penché sur mon problème.


--
Sandrine
sandrine.legrix@p-s-i.com
Posté le 16 décembre 2004 - 12:10
Le fonctionnement décrit est juste, au vu des données que tu fournis.

Les valeurs que tu compares sont alphabétiques et non numériques, ceci explique tes résultats.

Pour obtenir ce que tu cherches il faut que le code de article2 soit complèté a 9 caractère de cette façon : CED0916SAS. Comme cela, dans tes deux lectures tu auras article2 en premier.