Wusst ich doch, dass das auch mit schlappem Skript funktioniert ;D
Hier das Ganze noch einmal fürs Forum:
tmpFieldName:=NamensfeldUmDasEsGeht;
tmpGroupMembers:=@IfError(@DbLookup("":"NoCache"; @Subset (@DbName; 1):"names.nsf"; "($Users)"; tmpFieldName; "Members"); "");
tmpPerson := "";
@For(n := 1; n <= @Elements(tmpFieldname); n := n + 1;
@If(@DbLookup("":"NoCache"; @Subset (@DbName; 1):"names.nsf"; "($Users)"; tmpFieldName[n]; "Members")="";tmpPerson:=tmpPerson:tmpFieldName[n];""));
@If(tmpFieldName!="";@Trim(@Unique(@Name([CN];@If(@Subset(@DbName;1)="";tmpFieldName;tmpPerson:tmpGroupMembers))));"")
Die Formel löst in der Eingabeumsetzung eines Namensfeldes die Gruppe(n) in die jeweiligen Usernamen auf und entfernt die Bezeichnung der Gruppe selbst; Einzelnamen werden übernommen. Known Limitations: wie B. schon richtig erwähnt hat, funktioniert das bei verschachtelten Gruppen nicht. Wenn man von einer lokalen Replik aus arbeitet, wird die Gruppe erst beim nächsten Recalc von einer Server-Replik aus aufgelöst. Und die "names.nsf" muss natürlich auch im Zugriff sein.
Klar kriegt man sowas ab R6 auch mit @functions hin - ich hatte ja genau darauf hingewiesen. Und wenn man den Code noch unleserlicher / unwartbarer machen will: Damit geht sogar Rekursion (in diesem Fall) ;D
Eine Frage noch: Warum kommt das
@If (@Subset (@DbName; 1) = ""
erst, wenn eigentlich schon alle Messen gelesen sind? Die Operation sollte doch eigentlich gleich abgebrochen werden, wenn auf eine lokale DB "NAMES.NSF" zugegriffen wird ...
Komm mal runter, Junge.
Was das angeht: Ich bin kein "Junge". Ich stehe aber zu meiner Aussage.
Bernhard