Repositionnement dans un parcours par HRetourPosition
1 réponse
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 ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
"pmoune" <pmoune@gmail.com> wrote in message
news:f408ac95-2a5f-4d0d-ae1d-3096b1c8d80e@u41g2000yqe.googlegroups.com...
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.
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.