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

Repositionnement dans un parcours par HRetourPosition

1 réponse
Avatar
pmoune
Soit le bout de code suivant :

IdSauve est entier
wRequete est Source de Donn=E9es
SI HEx=E9cuteRequ=EAteSQL(wRequete,hRequ=EAteD=E9faut,"Select
CodeArticle,Designation,CodeFournisseur From Article Order By
CodeArticle") ALORS
HLitPremier(wRequete,"Designation")
TANTQUE PAS HEnDehors(wRequete)
Trace(wRequete.CodeArticle,wRequete.Designation)
IdSauve =3D HSauvePosition(wRequete)
HLitRecherchePremier(wRequete,"CodeFournisseur","ZZZ")
HRetourPosition(IdSauve)
HLitSuivant(wRequete,"Designation")
FIN
SINON
AfficheErreur()
FIN

On voit qu'u milieu de la boucle, je fais un HLitRecherchePremier sur
une cl=E9 diff=E9rente de la cl=E9 de parcours, donc je fais un
HSauvePosition() et un HRetourPosition() apr=E8s pour retrouver mon
parcours en cours. Jusque l=E0, tout fonctionne =85

Maintenant comme c=92est =E9crit dans l=92aide de la fonction HLitPremier()
je veux utiliser la clause Order By de la requ=EAte comme cl=E9 de
parcours donc je ne sp=E9cifie pas de cl=E9 de parcours dans les
HLitPremier() et HLitSuivant() (il est =E0 noter que ceci est un
exemple, en r=E9alit=E9 la clause Group By de ma requ=EAte fait au moins 1=
0
ou 15 =E9l=E9ments). Mon code devient alors le suivant :

IdSauve est entier
wRequete est Source de Donn=E9es
SI HEx=E9cuteRequ=EAteSQL(wRequete,hRequ=EAteD=E9faut,"Select
CodeArticle,Designation,CodeFournisseur From Article Order By
CodeArticle") ALORS
HLitPremier(wRequete)
TANTQUE PAS HEnDehors(wRequete)
Trace(wRequete.CodeArticle,wRequete.Designation)
IdSauve =3D HSauvePosition(wRequete)
HLitRecherchePremier(wRequete,"CodeFournisseur","ZZZ")
HRetourPosition(IdSauve)
HLitSuivant(wRequete)
FIN
SINON
AfficheErreur()
FIN

Eh bien la, le HRetourPosition() ne r=E9tablit pas le contexte du
parcours, et lors du HLitSuivant(), le HEndehors() devient vrai. Il
n=92y a donc qu=92un enregistrement affich=E9. Je pense que ceci vient du
fait que la cl=E9 de parcours n=92est pas sp=E9cifi=E9e. Mais alors comment
contourner ceci car j=92ai absolument besoin de cette fonctionnalit=E9. Je
pourrais construire une cl=E9 de parcours contenant les =E9l=E9ments de la
clause Order By et utiliser cette cl=E9 de parcours =E7a fonctionne, mais
cela alourdit consid=E9rablement la requ=EAte. N=92y a-t-il pas une autre
solution ?

Est-ce pareil en Windev 15 ?

Merci de vos r=E9ponses

1 réponse

Avatar
free
"pmoune" wrote in message
news:
une clé différente de la clé de parcours, donc je fais un
HSauvePosition() et un HRetourPosition() après pour retrouver mon
parcours en cours. Jusque là, tout fonctionne …



Tu suppose (à tort) que hsauveposition mémorise le parcours.
hsauveposition ne mémorise que la position, et pas la clé de parcours.