IBSQL.EOF - wie lange noch?

23/05/2010 - 10:27 von Nicole Wagner | Report spam
Hallo User,

gegeben sei folgender Sourceode:


*eine IBSQL-Query*

SetLength(myArray, Ergebnisanzahl);

repeat
* fuelle myArray *
until IBSQL.EOF;


Frage: Wie komme ich am besten zur Ergebnisanzahl?

Die SQL-Abfrage mit "count" wuerde ich gerne vermeiden, weil sie einige
Sekunden dauert. Ich wuerde gerne die Datensatz-Anzahl abfragen, die
IBSQL mir liefert, bevor das "EOF" erreicht ist.


Danke fuer Tipps!
Nicole
 

Lesen sie die antworten

#1 Matthias Hanft
23/05/2010 - 20:21 | Warnen spam
Nicole Wagner schrieb:

SetLength(myArray, Ergebnisanzahl);
repeat
* fuelle myArray *
until IBSQL.EOF;
Frage: Wie komme ich am besten zur Ergebnisanzahl?



Die weiß man vor dem EOF einfach noch nicht. Wie Du selbst ja schon
bemerkt hast, ist COUNT langsam, weil es intern eben selber erst mal
bis EOF geht, um die Anzahl rauszufinden, und dann wieder von vorne
anfàngt, um Dir die Ergebnisse zu schicken.

Ich arbeite bei sowas i.d.R. mit Listen, also eher

myList.Clear;
repeat
myList.Add(Ergebnisse_von_IBSQL)
until IBSQL.EOF;

Wenn dann _unbedingt_ ein Array werden soll:

SetLength(myArray, myList.Count);
for I:=0 to Pred(myList.Count) do
myArray[I]:=myList[I];

Aber das kostet nur Zeit und ist meistens unnötig. Denn wozu braucht
man schon Arrays, wenn es doch Listen gibt? :-)

Gruß Matthias.

Ähnliche fragen