Also, wenn Du durch eine lange Tabelle blättern willst, dann :
Erstelle einen CLUSTERED(!!!) INDEX auf der Spalte, nach der sortiert werden soll. Wir nennen die jetzt mal 'SEQ' (für Sequenz).
Dann:
In Delphi deklarierst du zwei Variablen: 'TopSeq' und 'BottomSeq'.
So, jetzt der Code:
Init:
'Select Top 10 * from MyTable Order by SEQ'
Du bekommst maximal 10 Zeilen. Der Wert 'SEQ' der 1.Zeile kommt in TopSeq, der der letzten Zeile in 'BottomSeq'
Nächste Seite laden:
'Select Top 10 * from MyTable Where SEQ > :BottomSeq order by SEQ'
Du bekommst maximal 10 Zeilen. Der Wert 'SEQ' der 1.Zeile kommt in TopSeq, der der letzten Zeile in 'BottomSeq'
Vorherige Seite laden:
'select * from (Select Top 10 * from MyTable Where SEQ > :TopSeq order by SEQ Desc) x order by SEQ'
Du bekommst maximal 10 Zeilen. Der Wert 'SEQ' der 1.Zeile kommt in TopSeq, der der letzten Zeile in 'BottomSeq'
Der Trick ist der Clustered Index, denn dann verbraucht die Sortierung keine Zeit (die Daten sind bereits sortiert abgelegt). Du wirst bei dieser Lösung keine Verzögerung bemerken, egal wie groß die Tabelle ist.
Unter
SQL 2005 gehts vielleicht auch noch einfacher, aber so hab ich mir seit 10 Jahren beholfen und es funzt sehr gut.
Die Frage, die Du dir stellen solltest, lautet aber:
Zitat von
Die Frage:
"Wieso soll jemand durch unmengen von Daten scrollen wollen ?"