Kann man den Inhalt einer
Query auf eine andere übertragen?
So sollte das funktionieren:
Delphi-Quellcode:
Procedure AppendDataset(aSource, aDestination : TDataSet);
Var
bookmark : TBookmark;
Procedure _AppendRow();
Var
field,dest : TField;
Begin
aDestination.Append;
For field in aSource.Fields do begin
dest := aDestination.FindField(field.FieldName);
if dest <> nil then
dest.Value = field.Value;
end;
aDestination.Post;
End;
Begin
bookmark = aSource.GetBookmark;
aSource.DisableControls;
Try
aSource.First;
while not aSource.Eof do begin
_AppendRow();
aSource.Next;
end;
Finally
aSource.GotoBookmark(bookmark);
aSource.FreeBookmark(bookmark);
aSource.EnableControls;
End;
End;
(Getippt und nicht getestet)
DAs ist natürlich so nicht das schnellste, weil jedes Mal 'FindField' aufgerufen wird. Wenn man sich das in einer Dictionary merkt, wird das viel flotter. Zudem sollte man wissen, das bei einem TDataset, welches an eine Datenbank gebunden ist, die neuen Zeilen sofort persitiert werden.