|
| [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. |
| |
| |
| | | |
|
| | | | |
| | |
|