Folgendes Beispiel ist vor kurzem entstanden, als wir vor der Aufgabe standen zu prüfen, ob der neu berechnete Inhalt für ein Rechtegruppen-Control ein Update rechtfertigt.
Denn das Update ist ja eine zeitintensive Operation die vielleicht auch noch weitere Events und Prozesse auslöst und somit im Idealfall vermieden werden kann, wenn im bisherigen Feld beispielsweise USER_A(u);USER_B(u);GROUP_X(g)
steht und das Update den Wert auf den bedeutungsgleichen String GROUP_X(g);USER_A(u);USER_B(u)
ändern würde.
Function IsRightsFieldEqual(f1, f2) ' -> boolean
Dim f1a: f1a = Split(UCase(f1), ";")
Dim search: search = ";" & UCase(f2) & ";"
If UBound(f1a) = UBound(Split(f2, ";")) Then
For Each f in f1a
If InStr(" " & search, ";" & f & ";") > 0 Then
search = ";" & Replace(search, ";" & f & ";", "") & ";"
Else
IsRightsFieldEqual = False
Exit Function
End If
Next
IsRightsFieldEqual = (Len(Trim(Replace(search, ";", ""))) = 0)
Else
IsRightsFieldEqual = False
End If
End Function
Es gibt sicherlich viele schöne oder weniger schöne Möglichkeiten, das Gleiche zu erreichen. Verbesserungsvorschläge werden gerne entgegengenommen.