0

Füllen eines Statusfeldes Abhängig von anderen Feldern

Hallo liebes Forum,
das hier sollt eigentlich einfach sein, ist aber umfangreicher als gedacht und ich komme nicht weiter.
Die Aufgabe: Erstellen des Feldes "Status", das anhand mehrerer Kriterien einen Arbeitsstatus in drei Schritten anzeigt:
1. "Zu Bearbeiten", 2." In Arbeit", 3. "Erledigt".
Die Informationen kommen aus folgenden Datumsfeldern der Tabelle "Tagungen" in die auch das Statusfeld eingefügt werden soll:
"Eingang per Post",
"Eingang per Mail",
"Formal okay",
"Inhaltlich okay",
"Entfernungsdatum",
sowie aus der verknüpften Tabelle "Rücksprachen". Diese Tabelle enthält das Feld "Erledigt". Zu einem Datensatz der Ausgangstabelle "Tagungen" kann es keine oder beliebig viele "Rücksprachen" geben.
Kann mir jemand bei der Erstellung der Formel helfen? Ich habe es mit einem Funktionsfeld versucht und komme nicht sehr weit …
Die Bedingungen sind folgende:
Das Feld "Status" soll nur angezeigt werden, wenn "Eingang per Post" != null ODER "Eingang per Mail" != null  - > Das funktioniert.
1. Status "Zu Bearbeiten":  if 'Eingang per Mail' != null or 'Eingang per Post' != "null" then "Zu Bearbeiten" -> Das funktioniert ebenfalls. Aber nun:
2. Status "In Arbeit":  "Eingang per Mail" ODER "Eingang per Post" != null UND – sofern es einen oder mehrere verknüpfte Datensätze "Rücksprachen" gibt, bei denen zumindest ein Feld "Erledigt" = null. D. h.: Es muss entweder "Eingang per Post" UND/ODER "Eingang per Mail" mit einem Datum versehen sein UND es muss mindestens einen verknüpften Datensatz "Rücksprachen" geben, bei dem mindestens ein Feld "Erledigt" noch kein Datum hat.
3. Status "Erledigt": WENN "Rücksprachen.Erledigt" entweder nicht existiert ODER alle mit einem Datum versehen sind UND "Formal okay" != null UND "Inhaltlich okay" != null ODER "Entfernungsdatum" != null.
Wenn jemand Lust zum Knobeln hat, würde mich das sehr freuen.
Beste Grüße unbd ein schönes Wochenende!
ali

4 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Ali,

    versuch es als Funktinsfeld so:

    ---

    let my1 := styled("Zu Bearbeiten", "red", "white", "note");
    let my2 := styled("In Arbeit", "blue", "white", "gear");
    let my3 := styled("Erledigt", "green", "white", "check");
    if 'Eingang per Post' or 'Eingang per Mail' then
    if cnt('Rücksprachen'[not Erledigt]) != 0 and not Entfernungsdatum then
    my2
    else
    if Entfernungsdatum or cnt('Rücksprachen'[not Erledigt]) = 0 and 'Formal okay' and 'Inhaltlich okay' then
    my3
    else
    my1
    end
    end
    end

    ---

    Wobei hier der Status auf ZuBearbeiten springt wenn alle Rücksprachen erledigt sind aber Format okay und Inhaltlich okay nicht ausgefüllt sind.

    Habe mir erlaubt das Feld noch mit Farbem und icons zu schmücken. 

    Leo

    • Ali
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Lieber Leo,

    wie großartig is das denn! Super! Vielen Dank! cnt verweist auf die verknüpfte Tabelle, oder? Dein Skript funktioniert wie gewünscht und von Dir beschrieben. Ich bin schwer beeindruckt. Und das mit den Farben und den Icons, ist das absolute i-Tüpfelchen! Bietest Du auch Beratungen/Schulungen für Ninox-Anwender an?

    Ein ganz großes Dankeschön! :-D

    ali

    PS: Was müsste man ändern, dass der Status nicht auf ZuBearbeiten springt, sondern auf InArbeit bleibt, bei den von Dir genannten Bedingungen? Müsste man diese Möglichkeit noch in my2 unterbringen? 

    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Ali,

    die Formel sollte dann so aussehen:

    ---

    let my1 := styled("Zu Bearbeiten", "red", "white", "note");
    let my2 := styled("In Arbeit", "blue", "white", "gear");
    let my3 := styled("Erledigt", "green", "white", "check");
    if 'Eingang per Post' or 'Eingang per Mail' then
    if cnt('Rücksprachen'[not Erledigt]) != 0 and not Entfernungsdatum or cnt('Rücksprachen'[not Erledigt]) = 0 and not Entfernungsdatum and (not 'Formal okay' or not 'Inhaltlich okay') then
    my2
    else
    if Entfernungsdatum or cnt('Rücksprachen'[not Erledigt]) = 0 and 'Formal okay' and 'Inhaltlich okay' then
    my3
    else
    my1
    end
    end
    end

    ---

    Leo

    • Ali
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Danke Leo, genial!

    Ich hab das blau bei "InArbeit" in orange und die Schrift in schwarz geändert und die Formel erfolgreich an den nächsten Arbeitsschritt "Verwendungsnachweis" angepasst, der ebenso ein Statusfeld brauchte. Toll! Danke! Und ich hab was gelernt :-) Noch einen schönen Sonntag!
    Beste Grüße, ali