Sql - Se positionner sur un enregistrement précis [Résolu]

Signaler
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014
-
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
-
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

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
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.
Messages postés
96
Date d'inscription
mercredi 25 octobre 2006
Statut
Membre
Dernière intervention
26 octobre 2009
3
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
Messages postés
302
Date d'inscription
jeudi 29 septembre 2005
Statut
Membre
Dernière intervention
17 septembre 2013
1
bonjour,

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

c'est pas plus sorcier ;-))
Messages postés
4719
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
1 février 2021
14
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
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

Désolé de n'avoir acté vos réponses avant !

Merci à tous
Messages postés
197
Date d'inscription
samedi 3 janvier 2004
Statut
Membre
Dernière intervention
17 décembre 2014

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,
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
@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.