Intern berechnete Felder in Client-Datenmengen verwenden
Nach oben zu Berechnete Felder hinzufügen
In anderen Datenmengen muss Ihre Anwendung den Wert berechneter Felder bei jeder Änderung des Datensatzes oder jeder Bearbeitung, die der Benutzer in Feldern des aktuellen Datensatzes vornimmt, neu berechnen. Dazu verwendet sie eine Ereignisbehandlungsroutine für DB.OnCalcFields.
Dies ist auch in einer Client-Datenmenge möglich. Hier kann jedoch die Anzahl der Berechnungen minimiert werden, indem die berechneten Werte zusammen mit den Daten der Client-Datenmenge gespeichert werden. Wenn berechnete Werte zusammen mit der Client-Datenmenge gespeichert werden, müssen sie zwar immer noch neu berechnet werden, wenn der Benutzer den aktuellen Datensatz bearbeitet, aber Ihre Anwendung muss die Werte nicht neu berechnen, wenn sich der aktuelle Datensatz ändert. Um berechnete Werte in den Daten der Client-Datenmenge zu speichern, verwenden Sie intern berechnete Felder anstelle berechneter Felder.
Intern berechnete Felder werden wie berechnete Felder in der Ereignisbehandlungsroutine OnCalcFields berechnet. Sie können jedoch Ihre Ereignisbehandlungsroutine optimieren, indem Sie die Eigenschaft State Ihrer Client-Datenmenge auswerten. Ist State gleich dsInternalCalc, müssen Sie die intern berechneten Felder neu berechnen. Ist State gleich dsCalcFields, müssen Sie nur normal berechnete Felder neu berechnen.
Um intern berechnete Felder verwenden zu können, müssen Sie die Felder als intern berechnet definieren, bevor Sie die Client-Datenmenge erstellen. Abhängig davon, ob Sie persistente Felder oder Felddefinitionen verwenden, wählen Sie dazu eine der beiden folgenden Methoden:
- Falls Sie persistente Felder verwenden, definieren Sie Felder als intern berechnet, indem Sie im Felder-Editor InternalCalc auswählen.
- Falls Sie Felddefinitionen verwenden, setzen Sie die Eigenschaft InternalCalcField der betreffenden Felddefinition auf True.
Anmerkung: Intern berechnete Felder werden auch von anderen Datenmengen verwendet. Bei anderen Datenmengen berechnen Sie diese Werte jedoch nicht in der Ereignisbehandlungsroutine für OnCalcFields. Stattdessen werden sie von der BDE oder dem externen Datenbankserver automatisch berechnet.