Zum Hauptinhalt springen

Zirkuläre Abhängigkeit bei Formeln vermeiden

Frage​

Ich habe zwei Merkmale (Sonderlänge und Sonderhub). Beide sind jeweils voneinander abhängig und könnten durch eine Formel berechnet werden. Wenn ich die Formeln in beide Merkmale eingebe, erhalte ich eine Fehlermeldung.

Beispiel: Der Wert des Sonderhubes wird berechnet, indem man „Sonderlänge – 180" eingibt. Umgekehrt ist die Sonderlänge „Sonderhub + 180". Allerdings müsste es offen bleiben, ob der Nutzer einen Hub oder eine Länge eingibt.

Antwort​

Bei zirkulären Abhängigkeiten (A berechnet sich aus B, B berechnet sich aus A) müssen Sie dem Nutzer eine Entscheidung vorschalten. Der Nutzer wählt, welchen Wert er eingeben möchte – das andere Merkmal wird dann berechnet.

Lösungsansatz​

  1. Auswahl-Merkmal anlegen: „Möchten Sie Sonderlänge oder Sonderhub eingeben?" mit den Werten „Sonderlänge" und „Sonderhub"

  2. Eingabefelder ausblenden: Je nach Auswahl das nicht benötigte Eingabefeld per Aktionsregel ausblenden

  3. Berechnetes Feld anlegen: Ein verstecktes berechnetes Merkmal „Tatsächliche Sonderlänge" mit folgender Formel:

variable("Möchten Sie Sonderlänge oder Sonderhub eingeben?").value == 1 ? Sonderlänge : Sonderhub + 180

Attribut für die Auswahl anlegen​

Damit die Formel funktioniert, müssen Sie an der Auswahl ein Attribut (Wert-Eigenschaft) anlegen:

  1. Öffnen Sie die Werte des Merkmales „Möchten Sie Sonderlänge oder Sonderhub eingeben?"
  2. Klicken Sie auf „Neue Spalte"
  3. Benennen Sie die Spalte als „value" und wählen Sie „Zahl" als Typ
  4. Klicken Sie auf „Anlegen"
  5. Vergeben Sie für den Wert „Sonderlänge" eine 1 und für „Sonderhub" eine 0
Formel-Syntax verstehen
  • variable("...") – Merkmale mit Leerzeichen im Namen werden in die Funktion variable() verpackt
  • Merkmal.Attribut – Mit der Schreibweise variable("...").value greifen Sie auf das Attribut „value" der Auswahl zu
  • a ? b : c – Der ternäre Operator: Wenn a wahr ist, wird b geliefert, sonst c

Ergebnis​

  • Wählt der Nutzer „Sonderlänge", gibt er die Länge direkt ein → das Feld „Tatsächliche Sonderlänge" übernimmt den Wert
  • Wählt der Nutzer „Sonderhub", gibt er den Hub ein → das Feld „Tatsächliche Sonderlänge" berechnet automatisch Sonderhub + 180

Weiterführende Informationen​

Verwandte Themen​

  • Bedingte Berechnungen
  • Ternärer Operator in Formeln
  • Versteckte berechnete Felder