Im Event prüfen, ob Rechtegruppen-Strings gleichwertig sind

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. :slight_smile: