![]() |
Datenbank: SQLite • Version: 3.8 • Zugriff über: FireDAC
FireDAC: Zwei TDataSets aus einer Query
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:
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.
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; 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)? |
AW: FireDAC: Zwei TDataSets aus einer Query
Da es die FireDAC-Dokumentation in XE5 wohl noch nicht so ganz in die lokale Hilfe geschafft hatte, hat es etwas länger gedauert aber im Endeffekt ist es ganz einfach:
![]()
Delphi-Quellcode:
Ist ein gutes Beispiel, wie man die Ergebnismenge einer Query in eine
FDQuery1.SQL.Text := 'select * from orders; select * from customers';
FDQuery1.Open; FDQuery1.FetchAll; // assign orders records to FDMemTable1 FDMemTable1.Data := FDQuery1.Data; FDQuery1.NextRecordSet; FDQuery1.FetchAll; // assign customers records to FDMemTable2 FDMemTable2.Data := FDQuery1.Data;
Delphi-Quellcode:
kopiert. Dauert insgesamt zwar etwas länger als zwei separate Firedac-Queries aber damit kann ich leben :-)
TFDMemTable
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:46 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