Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Arbeitsspeicherproblem beim speichern in TurboDB-Datenba

  Alt 18. Mai 2009, 16:44
Zitat von Tempdir:
Das Programm umzubauen dass es ohne Table-Komponenten läuft wäre ziemlich aufwändig
So wild ist das nicht.
Nimm einfach zusätzlich eine Query mit auf das Formular.
Die SQL-Abfrage (Property SQL) sieht dann so aus:
SELECT * FROM Tabellennamen WHERE 0=1 Statt TdbTable1 verwendest du den Namen der Query.
Zusätzlich wird alle 1000 Datensätze die Query geschlossen und neu geöffnet.
Dies verhindert den immer weiter zunehmenden Verbrauch an Arbeitsspeicher.
Delphi-Quellcode:
for i:=0 to 9999999 do
begin

if (i mod 1000) = 0 then
begin
  query1.close;
  query1.open;
end;

query1.Append;

//Fill dataset with data
for a := 2 to (151) do
begin
  //Insert dword data into table field
  query1.Fields[a-1].AsInteger := i;
end;

//Save dataset to archive-database
query1.Post;

end;
Ganz klar ist, dass die Verwendung von INSERT-Anweisungen wie in Beitrag #4 empfohlen,
die performanteste und Speicherplatzschonenste Möglichkeit ist,
aber mit obigem Sourcecode klappt es auch ganz gut.
  Mit Zitat antworten Zitat