Bonjour
j'ai écrit ce petit bout de code pour afficher les 500 derniers enregistrements d'une table qui en compte 80000.
j'utilise une requete pour calculer le nombre max de ligne et je me sers de ce nombre dans la 2ème requete pour utiliser le fonction rows .
ce fonctionne bien mais je voudrais savoir si il est possible d'optimiser ce code en une seule requete ?
au début pour faire simple j'avais fait comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm2.Button1Click(Sender: TObject); var com:integer; begin ibquery1.close; ibquery1.SQL.Clear; ibquery1.SQL.Add('select count(*) as nb from cmdsup'); ibquery1.Open; com:=ibquery1.FieldByName('nb').AsInteger; ibquery1.close; ibquery1.SQL.Clear; ibquery1.SQL.Add('select * from cmdsup'); ibquery1.SQL.Add('order by id_cmdsup asc '); ibquery1.SQL.Add('rows :com - 500 to :com'); ibquery1.ParamByName('com').AsInteger:=com; ibquery1.Open; end;
mais les utilisateurs n'aiment pas l'ordre de classement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ibquery1.close; ibquery1.SQL.Clear; ibquery1.SQL.Add('select * from cmdsup'); ibquery1.SQL.Add('order by id_cmdsup desc '); ibquery1.SQL.Add('rows 500'); ibquery1.Open;
Ils préfèrent avoir un classement du "haut vers le bas" dans une grille
cordialement
Partager