Erstmal vielen Dank für eure Antworten.
Ich habe gerade gesehen, dass mir bei dem Beitrag ein Fehler unterlaufen ist. Ausgerechnet die wichtigste Zeile fehlt:
temp := temp+100;
Dieser kommt am Schluss. Ich habe unten nochmal den überarbeiteten code angefügt.
"Form1." kann man selbstverständlich rausmachen.
"select id,*" - das * war nur zu anschauung. Ich würde auch nur die Felder wählen, die ich wirklich benötige.
Das mit der Fetch Funktion habe ich versucht. Entweder habe ich nicht verstanden wie es richtig geht, oder es geht nicht. Die Funktion wäre schon nice gewesen. Dann könnte ich mir den unteren code sparen; Weil dieser soll ja die Datensätze abschnittsweise einlesen. Aber ich denke, es lohnt sich, mich damit mal ausführlich auseinanderzusetzen.
Das mit .RecordCount habe ich rausgenommen. Ich dachte mit RecordCount wird die maximaldatensätzeanzahl angezeigt. Mit .RecNo wird die aktuelle Datensatz Nr angezeigt?
Hier der neue Code:
Delphi-Quellcode:
var
temp , stop, stopz, a: integer;
begin
// temp ist der "eigene Datensatz Zähler"
//temp := 0; //Anfang der ID's
stop := 0;
ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Text := '
select min(id) as mm from tabelle1;';
ZQuery3.Open;
temp := StrToInt(ZQuery3.FieldByName('
mm').AsString);
ZQuery3.Close;
ZQuery3.SQL.Clear;
ZQuery3.SQL.Text := '
select max(id) as mm from tabelle1';
ZQuery3.Open;
stopz := ((StrToInt(ZQuery3.FieldByName('
mm').AsString)-2));
while stop = 0
do begin //Datensätze nur abschnittsweise laden
ZQuery1.Close;
ZQuery1.SQL.Clear;
ZQuery1.SQL.Text := '
select id,* from tabelle1 where id >= "'+IntToStr(temp)+'
" Limit 100;';
// Limit 100: Ggf. verkleinern
ZQuery1.Open;
if (stopz <= temp)
then begin stop :=1; exit;
end;
// Wenn Ende erreicht von DB, dann Schleife beenden
for a := 0
to stopz
do begin
// *** Hier die einzelnen Datensätze verarbeiten ***
end;
//for
temp := temp+100;
// muss gleich sein wie bei Limit oben
end;
//while
end;