Ich würde da auch TDataSet verwenden aber als Parameter. Ich hab sonst immer ein ungutes Gefühl bei der Freigabe.
Das wird hier aber leider nicht funktionieren.
TDataset ist eine abstrakte Klasse. Man kann also nicht TDataset.Create aufrufen und das erzeugte Objekt übergeben.
Delphi-Quellcode:
procedure TDatenmodulXY.A(ds:TDataset);
begin
// Geht nicht, weil TDataset das Property SQL nicht kennt
ds.SQL.Text := '
SELECT * FROM ...';
// die Daten von einer ADOQuery auf das Dataset zu kopieren geht auch nicht
end;
Also muss es halt doch eine Funktion sein:
Delphi-Quellcode:
function TDatenmodulXY.A:TDataset;
begin
ADOQueryABC.close;
ADOQueryABC.SQL.Text := ...;
// evtl. auch weglassen und SQL zur Entwicklungszeit einstellen
ADOQueryABC.Open;
Result := ADOQueryABC;
end;