14 September 2011

InfoPath: Personenfeld mit aktuellem Benutzer vergleichen

Manchmal ist es nützlich den aktuellen Benutzer mit einem Benutzer in einem Peoplefeld zu vergleichen. Zum Beispiel wenn nur ein bestimmter Benutzer ein Fomular gehemigen kann.

Die einfachste Variante ist ein Peoplefeld zu erstellen, in dem beim Öffnen des Formulars der aktuelle Benutzer reingeschrieben wird. (Das Feld kann angezeigt werden oder auch nicht).

Somit kann man einfach die beiden AccountID-Felder miteinander vergleichen und für benutzerdefinierte Regeln benutzen.



Problem Gross-Kleinschreibung
Es kann vorkommen, dass Benutzernamen im ersten Feld Grossgeschrieben und im zweiten Feld kleingeschrieben sind und daher beim Vergleich nicht übereinstimmen, obschon es sich um denselben Benutzer handelt.

Dieses Problem kann wie folgt gelöst werden:
Anstatt bei der Kondition in der Regel die beiden Felder direkt zu vergleichen, soll die Regel mit einer Expression erstellt werden. Dort kann die Funktion "translate()" benutzt werden. Damit können alle Grossbuchstaben in Kleinbuchstaben umgewandelt werden.

Die ursprüngliche Expression sieht beispielsweise so aus:

my:Vorgesetzter/pc:Person/pc:AccountId != my:CurrentUser/pc:Person/pc:AccountId

Die Expression, welche Gross- und Kleinschreibung ignoriert sieht dann so aus:


translate(my:Vorgesetzter/pc:Person/pc:AccountId, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz") != translate(my:CurrentUser/pc:Person/pc:AccountId, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz")

Keine Kommentare: