|
FORUMS PROFESSIONNELS WINDEV, WEBDEV et WINDEV Mobile |
| | | | | |
| 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 |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|