Hm, darauf würde ich mich aber nicht verlassen, wenn man mit den Daten iterieren möchte.
Ein
SELECT * FROM user WHERE name='Maier'
gibt im
Query.Recordcount genau die Anzahl der Datensätze zurück, die in dieser Abfrage angefallen sind. Wenn man z.B. so weiterarbeiten möchte:
Delphi-Quellcode:
Query.Open;
iRecordCount:=
Query.Recordcount;
ShowMessage(inttostr(iRecordCount)+'
Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');
While not Query.eof
do
begin
mache was mit den Records
Query.Next;
end;
ist man auf der sicheren Seite.
Wenn man jetzt aber den Weg zu Fuß macht mit:
Delphi-Quellcode:
Query.SQL.Text:='
SELECT COUNT(*) FROM user WHERE name='Maier'
';
Query.Open;
iRecordCount:=
Query.Fields[0].asInteger;
ShowMessage(inttostr(iRecordCount)+'
Datensätze mit den Kriterien vorhanden, welche jetzt bearbeitet werden');
und dann ein
For ix:=0
to iRecordCount
do
begin
mache was mit den Records
Query.Next;
end;
kann es unter Umständen sein, dass dies durch den zeitlichen Abstand nich immer zu den gewünschten Ergebnissen führt.
Wenn es nicht anders geht, wäre evtl. eine Alternative bei Variante 2 den Table solange zu locken.
Gruß Igotcha