PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → Résultats bizarre lors d'un tri dans une requète
Résultats bizarre lors d'un tri dans une requète
Débuté par AntiSpam.jvmd, 06 déc. 2004 12:13 - 5 réponses
Posté le 06 décembre 2004 - 12:13
Bonjour.

Voici une partie du code qui me pose problème le but étant d'obtenir
les 3 plus gros résultats en classant la colonne et en lisant en
partant de la fin :

reqPlusGros est une source de données

hExecuteRequeteSQL (reqPlusGros, "SELECT * FROM Resultats ORDER BY
Result")

hLitDernier (reqPlusGros) // Je veux lire le plus gros Res et
l'afficher
POUR Z = 1 à 3
info(reqPlusGros.Result)
hLitPrecedent(reqPlusGros) // Je lis le précedent
Fin

C'est pas tout à fait mon code mais grosso modo c'est ça.

Le problème est que j'ai en fait 6 résultats Result avec le même
chiffre (25).

Lorsque je lance ma requète j'obtient 3 résultats (normal), mais si je
la relance encore j'en obtient 3 aussi mais pas les mêmes.

Si je relance encore j'obtient de nouveau les trois premiers et ainsi
de suite.

Bref les résultats ne sont pas les mêmes à chaque fois, ça s'alterne.

Quelqu'un a une idée du problème ?

JL
Posté le 06 décembre 2004 - 15:14
Bonjour,

Est-ce qu etu as mis l'instruction HAnnuleDéclaration(<Nom de la source de données>) à la fin de ton code?

Ocin
Posté le 06 décembre 2004 - 17:01
Le Mon, 6 Dec 2004 14:14:20 +0100, "ocin" <nicossimo53@hotmail.com>
écris :


Est-ce qu etu as mis l'instruction HAnnuleDéclaration(<Nom de la source de données>) à la fin de ton code?


Non, c'est important ?

En théorie lorsqu'une nouvelle requète est exécutée dans une source de
données déjà existante il y a écrasement des données non ?

Mais je peux me tromper je n'utilise jamais cette commande et si elle
existe ce n'est sans doute pas pour rien.

JL
Posté le 06 décembre 2004 - 17:55
Pourquoi ne pas faire un "ORDER BY" en ordre inverse (option DESC) et de lire les trois premiers ? "Est-ce qu etu as mis l'instruction HAnnuleDéclaration() à la fin de ton code?"
Non, c'est important ? " Oui, cela permet de libérer les ressources utilsées.
PL
Posté le 06 décembre 2004 - 18:48
On 6-Dec-2004, JVMD <AntiSpam.jvmd@hotmail.com> wrote:

Bonjour.

Voici une partie du code qui me pose problème le but étant d'obtenir
les 3 plus gros résultats en classant la colonne et en lisant en
partant de la fin :

reqPlusGros est une source de données

hExecuteRequeteSQL (reqPlusGros, "SELECT * FROM Resultats ORDER BY
Result")

hLitDernier (reqPlusGros) // Je veux lire le plus gros Res et
l'afficher
POUR Z = 1 à 3
info(reqPlusGros.Result)
hLitPrecedent(reqPlusGros) // Je lis le précedent
Fin

C'est pas tout à fait mon code mais grosso modo c'est ça.

Le problème est que j'ai en fait 6 résultats Result avec le même
chiffre (25).

Lorsque je lance ma requète j'obtient 3 résultats (normal), mais si je
la relance encore j'en obtient 3 aussi mais pas les mêmes.

Si je relance encore j'obtient de nouveau les trois premiers et ainsi
de suite.

Bref les résultats ne sont pas les mêmes à chaque fois, ça s'alterne.

Quelqu'un a une idée du problème ?

JL


Salut !

ta requète doit être comme ceci :
hExecuteRequeteSQL (reqPlusGros, "SELECT distinct results FROM Resultats
ORDER BY Result")
et tu auras ce que tu veux ...
Enfin, si je ne me gourre pas ! :-)

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Posté le 06 décembre 2004 - 19:42
Le Mon, 6 Dec 2004 16:55:59 +0100, "Philip"
<philip.lallement@at-armancon.com> écris :


Pourquoi ne pas faire un "ORDER BY" en ordre inverse (option DESC) et de lire les trois premiers ?


Dans l'absolu c'est pareil, démarrer par la fin et revenir ou inverser
le tri et démarrer du début.

J'avoue que maintenant ça m'interesse d'avoir le fin mot pour
comprendre ce comportement.

"Est-ce qu etu as mis l'instruction HAnnuleDéclaration() à la fin de ton code?"
Non, c'est important ? " Oui, cela permet de libérer les ressources utilsées.


En ce qui concerne HAnnuleDéclaration je vais l'utiliser maintenant
mais je me pose une question, je déclare ma source de données dans ma
procédure, en local donc. Les ressources ne sont pas libérées à la
sortie de ma procédure ? Ce n'est pourtant pas une déclaration
globale.

JL