Feld-Funktionen
Aus TRENZ PartnerNet
Feld-Funktionen sind eine neue Möglichkeit seit 3.2, den Wert eines Feldes durch eine SQL-Funktion automatisch festzulegen.
Die Funktionen werden in der Tabelle FieldFunctions mit Name, Container-Typ und zu veränderndem Feld deklariert. Parameter der Funktionen sind die Felder, die zur Berechnung herangezogen werden, in der gleichen Syntax wie bei zz-Tabellen.
Inhaltsverzeichnis |
Vorteile
- Das Ergebnis erscheint ohne Speichervorgang im Client. Gleichzeitig lässt sich dieselbe Funktion auch im Trigger verwenden (z.B. zu Import-Zwecken).
- easyLogic weiß, welches Feld zuletzt geändert wurde; die entsprechende Funktion erhält dann Vorrang.
- Im Designer sieht man für jedes Feld, ob, wie viele und welche Funktionen es hat.
- Der Designer warnt vor dem Löschen von Feldern, hinter denen eine Funktion hängt, und listet die entsprechenden Funktionen auf.
Anwendungsbeispiele
Bruttopreis
In Container-Typ 1 wird ein Bruttopreis (c3 aus Nettopreis (c1) und Mehrwertsteuersatz (c2) berechnet. Der Bruttopreis wird automatisch bei Änderungen von Nettopreis oder Steuersatz verändert neu berechnet.
In FieldFunctions tragen wir ein:
| CTypID | ControlID | FunctionName |
|---|---|---|
| 1 | 3 | beispieldb_GetBruttopreisByNettopreisAndSteuersatz |
…und legen eine entsprechende Funktion an:
CREATE FUNCTION beispieldb_GetBruttopreisByNettopreisAndSteuersatz (@c1 numeric(14,2), @c2 numeric(14,2)) RETURNS numeric(14,2) AS BEGIN DECLARE @result numeric(14,2) SELECT @result = @c1 + @c1 * @c2 / 100 RETURN @result END
Geschäftliche Telefonnummer
- In einen Container-Verweis eines Kontaktes (c4, Typ 2) wird eine Firma gezogen. In einem Textfeld (c5) wird die geschäftliche Telefonnummer aus der Firma (c6, Typ 3) im Kontakt angezeigt.
In FieldFunctions tragen wir ein:
| CTypID | ControlID | FunctionName |
|---|---|---|
| 2 | 5 | beispieldb_GetTelefonGeschäftlichForFirma |
…und legen eine entsprechende Funktion an:
CREATE FUNCTION beispieldb_GetTelefonGeschäftlichForFirma (@c4 int) RETURNS varchar(255) AS BEGIN DECLARE @result varchar(255) SELECT @result = c6 FROM zz_3_0 WHERE datensatz_id = @c4 RETURN @result END