Hi,
ich programmiere zur Zeit viel in C# und verwende dort auch diverse ORMs. Dort bin ich es gewöhnt zu den normalen (persistenten) Properties auch zusätzliche (berechnete) Properties zu programmieren.
Ein Beispiel wäre eine Rechnungsposition. In der Datenbank gibt es dann (minimalistisch dargestellt) die Felder:
Positionsnr
Menge
Einkaufspreis
AufschlagProzent
Zusätzlich würde ich also noch folgende Properties anlegen:
AufschlagAbsolut (berechnet sich aus Einkaufspreis / 100 * AufschlagProzent
Verkaufspreis (berechnet sich aus Einkaufspreis + AufschlagAbsolut)
Gesamtpreis (berechnet sich aus Verkaufspreis * Menge)
Bei den zusätzlichen Properties gibt es jetzt sowohl einen Getter als auch einen Setter.
Im Setter wird quasi rückwärtsgerechnet, sofern möglich... Beim Setter von Gesamtpreis wird z.B.
Code:
Verkaufspreis = neuerGesamtpreis / Menge
gerechnet...
Sinn und Zweck des Ganzen ist, dass man nur die nötigsten Werte abspeichert, die Logik dahinter nur einmal implementiert und es überall im Programm zuverlässig rechnet. Auch ist das Ganze sehr gut erweiterbar.
So mache ich das wie gesagt in C#.
Jetzt stelle ich mir die Frage, wie man sowas generell in Delphi macht. Da geht man ja eher den Weg über DataSets... Kann man da "virtuelle / berechnete" Spalten anlegen, die auch einen Setter implementieren können?
Bisher habe ich dazu nur ReadOnly-Spalten gesehen.
ORMs sind aufgrund der kaum brauchbaren LiveBindings ja noch nicht wirklich gut nutzbar in Delphi, oder?