Moin...
Die Lösung sind Objekte.
Die Auftragsklasse enthällt die
kompletten Daten. Der Auftrag wird in einer Objektliste gehalten. Wenn der Auftrag gespeichert werden soll, werden die Daten auf die verschiedenen Tabellen aufgeteilt (in der procedure "SaveOrder") und in der
DB gespeichert.
Die Löschung eines Auftragen erfolgt über die Objektliste. Die ID wird nur generiert wenn du die Order wirklich abschickst.
Nachteil: Du mußt dich von dem üblichen Datenbankzugriff (
DB Controls) und der Datenhaltung in Querys trennen.
Pseudocode:
Delphi-Quellcode:
TArticle =
class
...
end;
.
TOrder =
class
private
FArticleList: TObjectlist;
// besser mit Generics: TObjectlist<TArticle>
...
public
procedure AddArticle;
// oder direkt in die Liste schreiben
end;
.
procedure SaveOrder;
begin
// TOrder auf die Tabellen aufteilen mit mehreren SQL -> in einer Transaktion abschicken
end;