AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC: Zwei TDataSets aus einer Query
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC: Zwei TDataSets aus einer Query

Ein Thema von Der schöne Günther · begonnen am 27. Nov 2013 · letzter Beitrag vom 27. Nov 2013
Antwort Antwort
Der schöne Günther

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

FireDAC: Zwei TDataSets aus einer Query

  Alt 27. Nov 2013, 12: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
Der schöne Günther

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

AW: FireDAC: Zwei TDataSets aus einer Query

  Alt 27. Nov 2013, 12:58
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:

http://docwiki.embarcadero.com/Libra...FDDataSet.Data
Delphi-Quellcode:
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;
Ist ein gutes Beispiel, wie man die Ergebnismenge einer Query in eine TFDMemTable kopiert. Dauert insgesamt zwar etwas länger als zwei separate Firedac-Queries aber damit kann ich leben
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz