![]() |
Datenbank: Firebird • Version: 2.1.0 • Zugriff über: ZEOS
Runtime-Query an Designtime-Query binden ..Speicherproblem
Hallo Leute,
Angenommen, ich hab in einem Datamodul zweit TZQuerys (TZQuery1 und TZQuery2)(real 100erte) Zur Laufzeit erzeuge ich my_Query.TZQuery.create(das Modul) ab und zu setze ich my_query:= TZQuery1 ODER my_query:=TZQuery2 somit arbeite ich die ganze Zeit mit my_query (super Performance in der Anwendung) .. aber nach div. Funktionen hab ich eine Speicherauslastung von über 1 GB durch mein Programm.. Hat jemand eine Idee - wie ich das umgehen kann ? Danke Erich |
Re: Runtime-Query an Designtime-Query binden ..Speicherprobl
Was machst du sonst mit my_Query? Weist du etwas zu oder verwendest du es nur als Referenz?
|
Re: Runtime-Query an Designtime-Query binden ..Speicherprobl
.. nachdem ich ein "bestehendes" TZQuery über my_Query anspreche, werden diverse Werte gelesen - Manche Werte geänder(edit) oder hinzugefügt(append) und mit Post bestätigt (autoCommit bei TZConnection =true)..
Es werden keine Änderungen am SQL-Statement oder so durchgeführt... In einer Schleife mit "Case" teile ich dem "my_Query" mit, welches TZQuery es "verwenden" soll .. danach lese und schreib ich über dieses eine "my_Query" die Werte .. anhand von diesen Werten wird beim nächsten Durchlauf die Case-Anweisung wieder anders abgearbeitet ... Momentan vermute ich, das ein designtime-TZQuery nach abfeuern des SQL Statements das Ergebnis clientseitig in den Speicher legt - wenn ich nun mein my_Query auf des designtime-TZQuery lege, legt das my_Query das gleiche Datenbankabfrage-Ergebniss noch mal in den Speicher .. oder so :?: |
Re: Runtime-Query an Designtime-Query binden ..Speicherprobl
Dann brauchst du auch keine weitere Instanz erzeugen, sondern kannst direkt zuweisen, das
Delphi-Quellcode:
ist daher unnötig und führt zu dem erhöhten Speicherverbrauch
my_Query.TZQuery.create(das Modul);
|
Re: Runtime-Query an Designtime-Query binden ..Speicherprobl
Zitat:
|
Re: Runtime-Query an Designtime-Query binden ..Speicherprobl
.. ich habs noch nicht geschafft :-( ...
Ich hab z.B.:
Delphi-Quellcode:
und eine Schleife...
my_temp_Query1 :TZQuery
... TZQuery1 - Select wert1,wert2 from Tabelle1 TZQuery2 - Select wert1,wert2 from Tabelle2 TZQuery3 - Select wert1,wert2 from Tabelle3 TZQuery4 - Select wert1,wert2 from Tabelle4 TZQuery5 - Select wert1,wert2 from Tabelle5 TZQuery6 - Select wert1,wert2 from Tabelle6 TZQuery7 - Select wert1,wert2 from Tabelle7 ...
Delphi-Quellcode:
while not TZQuery1.EOF do
begin if wert1 = x1 then my_temp_Query1:=TZQuery1; if wert1 = x2 then my_temp_Query1:=TZQuery2; if wert1 = x3 then my_temp_Query1:=TZQuery3; if wert1 = x4 then my_temp_Query1:=TZQuery4; if wert1 = x5 then my_temp_Query1:=TZQuery5; if wert1 = x6 then my_temp_Query1:=TZQuery6; my_temp_Query1.append irgendwas... my_temp_Query1.post my_temp_Query1:=nil; TZQuery1.next; end; Wenn das so ausgeführt wird, steigt die Speicherauslastung extrem an und wird nicht mehr freigegeben.. ich hab my_temp_Query schon created .. nicht created.. Refresh'ed .. free gesetzt .. ect.. hat jemand eine idee ? vielen Dank Erich [edit=mkinzler]Delphi-Tags eingefügt Mfg, mkinzler[/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz