Ich verstehe nicht, wieso
1. eine Spalte eines Memory-Datasets nicht bearbeitbar sein sollte
2. Du keine zusätzlichen Spalten in das Dataset einfügen kannst.
Wenn dann das 'LoadFrom' nicht mehr funktioniert, machst Du das eben per Hand:
Delphi-Quellcode:
Procedure CopyData(aSrc, aDest : TDataSet);
Begin
aDest.DisableControls;
Try
aSrc.First;
while not aSrc.Eof do begin
aDest.Append;
aDest['Field1'] := aSrc['Field1'];
...
aDest.Post;
Finally
aDest.EnableControls;
end
end;
Natürlich musst Du dafür sorgen, das die Zieltabelle leer ist (außer, Du willst sie erweitern). Auf diese Weise bist Du aber von der Quelltabelle vollkommen unabhängig, denn Du kannst so die
Query jederzeit ändern und musst dann nur in dieser Routine das Mapping (also die Zuweisungen) anpassen. Die Zieltabelle (dein Memory-Dataset) bleibt davon unberührt.
Umgekehrt kannst Du nun auch die Memorytabelle in ihrer Struktur verändern, ohne die
Query anfassen zu müssen. Beispielsweise mit zusätzlichen Feldern.
Zu Punkt 4: Du kannst im AfterPost-Event des Memorydatensatzes weitere Aktionen auslösen, aber das würde ich nicht tun. Stattdessen würde ich den Anwender die Bestellungen (im Memory) bearbeiten lassen und erst nach Bestätigung (OK-Taste, 'Wollen Sie die Bestellungen jetzt auslösen') gehst Du durch die Tabelle und führst für jeden Datensatz die Bestellung aus.