Sql - Se positionner sur un enregistrement précis

Résolu
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014 - 7 avril 2009 à 16:55
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 5 oct. 2009 à 15:55
Bonjour je fais une requete Select, je voudrais savoir comment me positionner sur la réponse n°3 par exemple.

Merci par avance,

// On execute la requete Select qu'on va utiliser apres
Form2.SQLQuery1.SQL.Clear;
Form2.SQLQuery1.SQL.Add('select Date from Test order by Date DESC');
Form2.SQLQuery1.Open;


// On positionne le resulat du select sur la ligne correspond à la selection du DbGrid
Form2.SQLQuery1.RecNo:=3;  <-- Mais ca marche pas !!!

7 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
9 avril 2009 à 22:16
Honnêtement "select Date from Test order by Date DESC" est loin d'être optimisé. En effet, récupérer la colonne date de toute une table quand on ne souhaite récupérer qu'une seule ligne, quel gâchis !
Seconde remarque : évite de nommer tes champs avec des mots réservés du langage SQL. Ici, le champ date en est une parfaite illustration et, de plus, ce champ n'a aucune signification sur son contenu. Une date : ok, mais la date de quoi ???
Pour restreindre à une ligne l'ensemble de données à récupérer, il suffit d'ahouter une clause WHERE dans ta requête.
Pour finir, donnes-toi la peine d'étudier un minimum le langage SQL si tu veux progresser et ne pas buter en permanence sur des questions aussi simples.

May Delphi be with you<hr />Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
3
tilab Messages postés 95 Date d'inscription mercredi 25 octobre 2006 Statut Membre Dernière intervention 26 octobre 2009 4
5 oct. 2009 à 08:08
Salut,

Le plus simple et le plus rapide

"select Date from Test order by Date DESC limit 3"
tu te déplaces avec last et le tour est joué

Alex
3
beckerich Messages postés 302 Date d'inscription jeudi 29 septembre 2005 Statut Membre Dernière intervention 17 septembre 2013 2
8 avril 2009 à 17:20
bonjour,

form2.sqlquery1.next;
form2.sqlquery1.next;

c'est pas plus sorcier ;-))
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
8 avril 2009 à 22:27
bonsoir pépé,
Form2.SQLQuery1.RecNo:=3;
ne peut pas fonctionner puisque ta requête est déjà exécutée

une requête paramètrée sera plus appropriée..
(si j'ai bien compris la question..)

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
16 mai 2009 à 19:46
Désolé de n'avoir acté vos réponses avant !

Merci à tous
0
vieuxpere Messages postés 195 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 17 décembre 2014
5 oct. 2009 à 10:01
Saut Tilab,

Ta méthode est en efet super simple.

Depuis je me suis débrouillé mais je garde cette méthode en vue d'un besoin futur.

Merci beaucoup,
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
5 oct. 2009 à 15:55
@vieuxpere et @tilab : attention, la clause "LIMIT" n'est pas reconnue par tous les SGBD. Et comme tu n'as pas précisé quelle base de données tu utilisais, ce n'est pas forcément valable.


8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
0
Rejoignez-nous