Einzelnen Beitrag anzeigen

bogdan

Registriert seit: 15. Apr 2013
77 Beiträge
 
#1

Funktion mit TQuery als Rückgabewert

  Alt 3. Nov 2013, 13:13
Datenbank: mySQL • Version: 5.x • Zugriff über: Zeos
Ich benutze die Zeos Komponenten für SQL Abfragen.

SQL Statement soll in einer Funktion ausgeführt und das Ergebnis als TQuery weiter gegeben werden.

Also so in etwa:

Delphi-Quellcode:
function SQLSelect(SQLtxt: String):TZReadOnlyQuery;
var xQuery : TZReadOnlyQuery;
begin
  xQuery := TZReadOnlyQuery.Create(nil);
  xQuery.Connection := ZConnection1;
  xQuery.SQL.Clear;
  xQuery.SQL.Add(SQLtxt);
  if ZConnection1.Connected then
  begin
    xQuery.Open;
    xQuery.Active := True;
  end else ShowMessage('Keine Datenbankverbindung!');
  Result := xQuery;
end;
So bläht sich aber das Query mit jeder neuen SQL Abfrage auf und dann ist der Speicher voll.
Das Aufblähen könnte ich mit FreeAndNil(xQuery); am Ende der Funktion beheben.

Das Problem ist nur: der Rückgabewert ist dann auch immer leer.

Array, Strings, etc. als Rückgabewert wollte ich eigentlich nicht nutzen, da die Daten dann nochmal aus der Query in das Array, etc. geschrieben werden müssen. Ist doch irgendwie doppelt-gemoppelt.
  Mit Zitat antworten Zitat