Definition

Menüaufruf: (Konfiguration) - (Datenquellen) - (Berechnetes Attribut)

Ein berechnetes Attribut ist ein einzelner Rückgabewert einer Datenbankabfrage, der im Businessobjekt mit einem Feld verknüpft werden kann. Somit kann dieser Wert in der Maske zur Laufzeit angezeigt werden, ohne dass für dessen Aktualisierung eine Aktion vom Benutzer nötig wird.

Berechnete Attribute haben gegenüber Funktionen in Datenbankobjekten den Vorteil, dass man bei der Berechnung noch ein paar Kontext-Variablen zur Verfügung hat, z.B.

  • username
  • mandator

Beim Mandanten / mandator muss der Platzhalter extra geklammert werden, z.B. so

select 
  pm.strvalue 
from 
  t_md_nucletparameter 
  inner join t_md_mandator_param_value pm on t_md_nucletparameter.struid 
where 
  pm.struid_t_md_nuclet_param where strparameter = 'Nucletparameter x' 
  and pm.struid_t_md_mandator = ('$mandator')


In der Datenquelle sollte nicht "t" als Tabellen-Alias verwendet werden, da dieser schon von Nuclos verwendet wird und es dadurch zu falschen Ergebnissen kommen kann.



Anwendung

Ein Berechnetes Attribut kann über eine Datenquelle definiert werden.

Benötigt wird ein Parameter für die INTID des Datensatzes, in dem das Attribut eingeblendet weden soll. Dieses muss in der Abfrage entsprechend berücksichigt werden, wenn es einen Bezug zum Hauptdatensatz geben soll.

Der Rückgabewert muss dem Wert entsprechen, der im Attribut angezeigt werden soll. Im Businessobjekt muss später bei der Verknüpfung der gleiche Datentyp gewählt werden.



Weitere Beispiele:


Dynamische Hintergrundfarbe eines Attributs

Dieses Feature steht ab Nuclos 4.2024.5 zur Verfügung.

Der Richclient bietet die Möglichkeit die Hintergrundfarbe einer Komponente für ein Attribut mittels Groovy-Skript zu bestimmen (s.a. Regeln (clientseitig)).
Da Groovy-Skripte im Webclient nicht ausgewertet werden können, bietet Nuclos alternativ die Verwendung einer Datenquelle ("Berechnetes Attribut") an, die den Farbwert als hex-kodierten String zurückliefert, bspw #00ff00 für die Farbe "grün".

Diese Datenquellen werden wie gewohnt über den Menüpunkt "Datenquellen → Berechnetes Attribut" angelegt. Es stehen die folgenden Parameter zur Verfügung:

ParameterDatentypBeschreibung
intidLongLiefert die ID des Datensatzes
strfieldStringName des Attributs, für das die Hintergrundfarbe bestimmt werden soll.
struidfieldStringUID des Attributs, für das die Hintergrundfarbe bestimmt werden soll.
fieldvalueIntern: SQL

Wert des Attributs, für das die Hintergrundfarbe bestimmt werden soll.

Dieser Parameter wird durch ein SQL-Snippet ersetzt. Als Valuelist Provider für die SQL Whitelist muss attributeColorSQLWhitelist ausgewählt werden.

Handelt es sich um einen Wert, der quotiert werden muss, wie bspw. einen Text, muss bei Anzeigename folgender Text eingetragen werden: ' 
Bei Werten, die nicht quotiert werden müssen, wie bspw. boolschen oder numerischen Werten, bleibt der Anzeigeausdruck leer.

Falls die Hintergrundfarbe für ein berechnetes Attribut (Wert wird von Datenquelle oder DB-Funktion geliefert) bestimmt werden soll, wird der Parameter durch das SQL aus der Datenquelle, bzw. den Aufruf der DB-Funktion ersetzt.


usernameStringBenutzername des aktuellen Benutzers.
mandatorStringListe der UIDs der für den aktuellen Benutzer gültigen Mandanten

Hierarchie zur Bestimmung der Hintergrundfarbe einer Komponente

Richclient: Groovy-Skript > Datenquelle > nuclosrowcolor (nur relevant für Ergebnisliste oder Unterformular) > statische Hintergrundfarbe aus Layout

Webclient: Datenquelle > nuclosrowcolor (nur relevant für Ergebnisliste oder Unterformular) > statische Hintergrundfarbe aus Layout

Beispiel

SELECT
	CASE
		WHEN $fieldvalue IS NULL THEN null
		WHEN $fieldvalue > 100 THEN '#00ff00'
		ELSE '#ff0000'
	END as color