Felder berechnen

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Datenmengen - Index


Mit dem Felder-Editor können Sie für die Datenmenge berechnete Felder definieren. Wenn eine Datenmenge berechnete Felder enthält, müssen Sie den Quelltext zur Berechnung der entsprechenden Feldwerte in einer Ereignisbehandlungsroutine für das Ereignis DB.OnCalcFields programmieren.

Die Eigenschaft AutoCalcFields bestimmt, wann OnCalcFields ausgelöst wird Wenn AutoCalcFields den Wert True hat, wird OnCalcFields in folgenden Fällen ausgelöst:

  • Eine Datenmenge wird geöffnet.
  • Die Datenmenge wird in den Bearbeitungsmodus versetzt.
  • Wenn ein Datensatz aus der Datenbank abgerufen wird.
  • Wenn der Fokus von einer visuellen Komponente an eine andere übergeben wird, oder wenn er von einer Spalte in einem datensensitiven Gitter zu einer anderen Spalte wechselt und der aktuelle Datensatz verändert wurde.

Wenn AutoCalcFields auf False gesetzt ist, wird OnCalcFields bei der Bearbeitung einzelner Felder innerhalb des Datensatzes nicht aufgerufen (vierte Bedingung oben).

Warnung: Da OnCalcFields sehr oft ausgelöst wird, sollte der Quelltext für dieses Ereignis möglichst kurz gehalten werden. Wenn AutoCalcFields auf True gesetzt ist, sollten ferner mit OnCalcFields keine Aktionen durchgeführt werden, mit denen die Datenmenge (oder eine verknüpfte Datenmenge, wenn sie Teil einer Haupt/Detail-Beziehung ist) geändert wird. Dies kann nämlich zu einer Rekursion führen. Beispiel: Wenn mit OnCalcFields Änderungen in die Datenbank zurückgeschrieben werden (Methode Post) und für AutoCalcFields der Wert True gilt, wird OnCalcFields wieder aufgerufen, dies bewirkt ein nochmaliges Aufrufen von Post usw.

Bei der Ausführung von OnCalcFields wird die Datenmenge in den Modus dsCalcFields versetzt. In diesem Status sind außer in den berechneten Feldern, welche die Behandlungsroutine bearbeiten soll, keine Änderungen am Datensatz oder Hinzufügungen möglich. Dies liegt daran, dass OnCalcFields die Werte in anderen Feldern zur Ableitung der berechneten Feldwerte verwendet. Änderungen in den anderen Feldern könnten deshalb die den berechneten Feldern zugewiesenen Werte ungültig machen. Wenn die Ausführung von OnCalcFields beendet ist, befindet sich die Datenmenge wieder im Status dsBrowse.

Siehe auch