Habe mal auf die Schnelle eine Procedure geschrieben, mit der man die IDs der letzten 10 Datensätze schnell ermitteln kann:
Delphi-Quellcode:
SET TERM ^ ;
create or alter procedure p_last10
returns (
bmin integer,
bmax integer)
as
declare variable c integer;
declare variable maxl integer;
declare variable btemp integer;
begin
c=1;
select max(buch_nr) from buchungen into :bmax;
bmin=bmax;
maxl=0;
while ((c<10) and (maxl<100)) do
begin
select max(buch_nr) from buchungen where buch_nr<:bmin into :btemp;
if (not btemp is null) then
begin
c=c+1;
bmin=btemp;
end
maxl=maxl+1;
end
suspend;
end
^
SET TERM ; ^
Die Procedure liefert die beiden Werte bmin und bmax.
Maxl soll Verhindern, dass die Procedure in einer Endlosschleife hängenbleibt, wenn keine 10 Datensätze gefunden werden (ungetestet).
Dann braucht man nur noch den Select mit den beiden Parametern aus der Procedure ausführen.
Bei mir
select * from buchungen where buch_nr between :s and :t