Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.155 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

FireDAC: Zwei TDataSets aus einer Query

  Alt 27. Nov 2013, 13:08
Datenbank: SQLite • Version: 3.8 • Zugriff über: FireDAC
Hört sich so sinnvoll an wie "Zwei Exceptions auf einmal"

Ich habe bislang dbExpress genutzt, jetzt möchte ich auf FireDAC wechseln. Folgendes Problem, vereinfacht und in Quellcode-Form:

Delphi-Quellcode:
connection: TSQLConnection;
outerResultSet: TDataSet;
innerResultSet: TDataSet;

connection.Execute(
   'SELECT * FROM someTable',
   nil,
   outerResultSet
);

try
   outerResultSet.First();
   while not outerResultSet.eof do begin

      // Tue Dinge mit Tupeln aus outerResultSet
      
      connection.Execute(
         'SELECT * FROM someOtherTable',
         nil,
         innerResultSet
      );
      try
         // Tue Dinge mit den Tupeln aus innerResultSet...
      finally
         innerResultSet.Free();
      end;
      
      // Tue abschließende Dinge mit Tupeln aus outerResultSet

      outerResultSet.Next();
   end;
finally
   outerResultSet.Free()
end;
Die Execute-Methode von TSQLConnection war immer so freundlich, mir ein komplett neues TDataSet anzulegen mit dem ich dann so lange arbeiten konnte, wie ich es gebraucht habe.


Jetzt frage ich mich, wie ich das in FireDAC umsetzen soll. Ich finde keine Methode auf Connection oder Query-Objekten, die mir ein isoliertes TDataSet geben.
Für den obigen Fall bräuchte ich zwei separate Query-Objekte, das fiele mir spontan ein, finde ich aber hässlich. Hinter vorgehaltener Hand erzählt man sich von "MemTables" in FireDAC. Bringt mich das weiter? Einmal eine komplette Kopie des ResultSets (wird schon nicht zu groß) in den Speicher legen (wie das outerResultSet)?
  Mit Zitat antworten Zitat