Repositionnement dans un parcours par HRetourPosition

Le
pmoune
Soit le bout de code suivant :

IdSauve est entier
wRequete est Source de Données
SI HExécuteRequêteSQL(wRequete,hRequêteDéfaut,"Select
CodeArticle,Designation,CodeFournisseur From Article Order By
CodeArticle") ALORS
HLitPremier(wRequete,"Designation")
TANTQUE PAS HEnDehors(wRequete)
Trace(wRequete.CodeArticle,wRequete.Designation)
IdSauve = 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é 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 …

Maintenant comme c’est écrit dans l’aide de la fonction HLitPremier()
je veux utiliser la clause Order By de la requête comme clé de
parcours donc je ne spécifie pas de clé de parcours dans les
HLitPremier() et HLitSuivant() (il est à noter que ceci est un
exemple, en réalité la clause Group By de ma requête fait au moins 1=
0
ou 15 éléments). Mon code devient alors le suivant :

IdSauve est entier
wRequete est Source de Données
SI HExécuteRequêteSQL(wRequete,hRequêteDéfaut,"Select
CodeArticle,Designation,CodeFournisseur From Article Order By
CodeArticle") ALORS
HLitPremier(wRequete)
TANTQUE PAS HEnDehors(wRequete)
Trace(wRequete.CodeArticle,wRequete.Designation)
IdSauve = HSauvePosition(wRequete)
HLitRecherchePremier(wRequete,"CodeFournisseur","ZZZ")
HRetourPosition(IdSauve)
HLitSuivant(wRequete)
FIN
SINON
AfficheErreur()
FIN

Eh bien la, le HRetourPosition() ne rétablit pas le contexte du
parcours, et lors du HLitSuivant(), le HEndehors() devient vrai. Il
n’y a donc qu’un enregistrement affiché. Je pense que ceci vient du
fait que la clé de parcours n’est pas spécifiée. Mais alors comment
contourner ceci car j’ai absolument besoin de cette fonctionnalité. Je
pourrais construire une clé de parcours contenant les éléments de la
clause Order By et utiliser cette clé de parcours ça fonctionne, mais
cela alourdit considérablement la requête. N’y a-t-il pas une autre
solution ?

Est-ce pareil en Windev 15 ?

Merci de vos réponses
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
free
Le #20909001
"pmoune" 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.
Publicité
Poster une réponse
Anonyme