Veröffentlicht Fri, 20 Oct 2023 17:24:34 GMT von Oliver Acker Property Manager
Hallo zusammen,

im Workflowdesigner verwenden wir unter "Validierung" foglende Anweisung:

iif((Dokumententyp_ LIKE "*Vertrag*"), LEN(Vertragsgeber__)>0, LEN(Vertragsgeber__)>=0)

Dieses Snippet besagt, dass wenn der Dok-Typ das Wort "Vertrag" enthält anschließend das Workflowfeld "Vertragsgeber" nicht leer sein darf. Funktioniert einwandfrei.

Nun möchten wir den Code so erweitern, dass ebenfalls das Datumsfeld "Vertragsbeginn" nicht leer sein darf, sofern der Dok-Typ das Wort "Vertrag" enthält.

Wie lautet der Ausdruck?

Vielen Dank im Voraus.

VG O. Acker
Veröffentlicht Mon, 23 Oct 2023 07:38:30 GMT von Gerardo Lisanti Team Leader Product Management
Hallo Oliver,

der Ausdruck sollte enstprechend folgendermaßen lauten:
iif((Dokumententyp_ LIKE "*Vertrag*"), (LEN(Vertragsgeber__)>0 AND LEN(CStr(Vertragsbeginn__))>0), LEN(Vertragsgeber__)>=0 AND LEN(CStr(Vertragsbeginn__))>=0)


Viele Grüße / With best regards,

--
Gerardo Lisanti
Team Leader Product Management  |  DocuWare GmbH
Veröffentlicht Mon, 23 Oct 2023 13:48:40 GMT von Oliver Acker Property Manager
super, das klappt.

Vielen Dank.
Veröffentlicht Mon, 23 Oct 2023 19:16:33 GMT von Oliver Acker Property Manager

nun wollten wir die Abfrage verschachteln. Und zwar soll folgendes umgesetzt werden:

Wenn der Dokumententyp das Wort "Vertrag" enthält, darf das Feld "Vertragsnehmer" + "Vertragsgeber" + "Vertragsdatum" nicht leer sein.

Zudem soll in der Abfrage ebenfalls enthalten sein:

...wenn der Dokumententyp das Wort "Bericht" enthält, darf das Feld "Ausführungsdatum" nicht leer sein.

Folgender Code wird vom Workflowdesigner akzeptiert aber die Ergebnisse sind nicht wie gewünscht:

IIf(
    (Posteingang_Dokumententyp_ LIKE "*Vertrag*"),
    (LEN(Posteingang_Vertragsgeber__) > 0 AND LEN(CStr(Posteingang_Vertrag_gültig_ab___)) > 0),
    (LEN(Posteingang_Vertragsnehmer__) >= 0) AND (LEN(Posteingang_Vertragsnehmer__) > 0)
)
AND
IIf(
    (Posteingang_Dokumententyp_ LIKE "*Bericht*"),
    (LEN(CStr(Posteingang_Ausführungsdatum__Bericht__)) > 0),
    (LEN(CStr(Posteingang_Ausführungsdatum__Bericht__)) >= 0)
)

Wir haben mehr als eine Stunde an diversen Kombinationen herumgebastelt. Leider ohne Erfolg.

Wir sind auf die Lösung gespannt.

Vielen Dank.

Veröffentlicht Tue, 24 Oct 2023 10:12:08 GMT von Gerardo Lisanti Team Leader Product Management
Die IIf Funktion ist folgendermaßen aufgebaut:
IIf(expr, truepart, falsepart)
  • expr: Der zu bewertende Ausdruck.
  • truepart:  Zurückgegebener Wert oder Ausdruck, wenn exprTrue ist.
  • falsepart: Zurückgegebener Wert oder Ausdruck, wenn exprFalse ist.

Der Code lautet entsprechend:
IIf(
    (Posteingang_Dokumententyp LIKE "*Vertrag*"),
    (LEN(Posteingang_Vertragsgeber) > 0 AND LEN(CStr(Posteingang_Vertrag_gültig_ab)) > 0 AND LEN(Posteingang_Vertragsnehmer) >0),
    true)
And
IIf(
    (Posteingang_Dokumententyp LIKE "*Bericht*"),
    (LEN(CStr(Posteingang_Ausführungsdatum_Bericht)) > 0),
    true)



Wenn wir uns die erste IIf Funktion genauer ansehen, dann ist folgendes definiert:
  • expr: Posteingang_Dokumententyp LIKE "*Vertrag*"
  • truepart(LEN(Posteingang_Vertragsgeber) > 0 AND LEN(CStr(Posteingang_Vertrag_gültig_ab)) > 0 AND LEN(Posteingang_Vertragsnehmer) >0)
  • falseparttrue

Als truepart, prüfen wir ob die Länge aller drei Felder größer 0 ist. Die Funktion LEN() gibt automatisch true bzw. false zurück.
Als falsepart geben wir direkt true zurück.

Durch den Rückgabewert wird der Validierung signalisiert, ob die eingegebenen Werte gültig (true) bzw. ungültig (false) sind.


Codeblock zum Kopieren:
iif((Posteingang_Dokumententyp LIKE "*Vertrag*"),(LEN(Posteingang_Vertragsgeber) > 0 AND LEN(CStr(Posteingang_Vertrag_gültig_ab)) > 0 AND LEN(Posteingang_Vertragsnehmer) >0),true) AND
iif((Posteingang_Dokumententyp LIKE "*Bericht*"),(LEN(CStr(Posteingang_Ausführungsdatum_Bericht)) > 0),true)


Viele Grüße / With best regards,

--
Gerardo Lisanti
Team Leader Product Management  |  DocuWare GmbH
Veröffentlicht Tue, 24 Oct 2023 14:23:31 GMT von Oliver Acker Property Manager
Hallo Herr Lisanti,

vielen Dank für die ausführliche Erläuterung. Ihr neuer Code funktioniert ebenfalls einwandfrei :)

Herzlichen Dank.

Oli Acker

Sie müssen angemeldet sein um Beiträge in den Foren zu erstellen.