Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: jo@chim am 22.02.07 - 15:46:05

Titel: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 22.02.07 - 15:46:05
In der Eingabeumsetzung des Feldes "NamensfeldUmDasEsGeht" löse ich, falls eine Gruppe eingegeben wird, diese in die einzelnen Usernamen auf:

tmpFieldName:=NamensfeldUmDasEsGeht;
tmpGroupMembers:=@IfError(@DbLookup("":"NoCache"; @Subset (@DbName; 1):"names.nsf"; "($Users)"; tmpFieldName; "Members"); "");
@If(tmpFieldName!="";@Implode(@Name([CN];tmpFieldName:tmpGroupMembers);", ");"")

Funktioniert soweit. Allerdings zeigt das Feld dann die Gruppe noch einmal mit an. Hat jemand, der nicht so wie ich aktuell an einer schweren Gehirnverknotung leidet, eine Idee wie ich die Rückgabe der Gruppenbezeichnung selbst vermeiden kann?  :-:
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: koehlerbv am 22.02.07 - 15:51:32
Du forderst das doch auch explizit an:
@If(tmpFieldName!="";@Implode(@Name([CN];tmpFieldName:tmpGroupMembers);", ");"")
Wenn Du das weglässt, funktioniert es auch so wie gewünscht.

Bernhard
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 22.02.07 - 15:58:24
Negativ, Sir: wenn der Anwender einen oder mehrere Einzelnamen eingibt, werden diese nicht angezeigt, wenn ich den Ursprungsfeldwert raus lasse, da ja das tmpGroupMembers in diesem Fall nichts zurückliefert.
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: koehlerbv am 22.02.07 - 16:29:01
Davon war aber im Ausgangspost noch nicht die Rede ...

Warum gehst Du dann nicht in einer Schleife durch NamesFeldUmDasEsGeht? Ausserdem sollte sich hier der Umstieg auf LS lohnen - hiemit kannst Du auch nested groups rekursiv auflösen.

Bernhard
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 22.02.07 - 17:38:40
Zitat
Davon war aber im Ausgangspost noch nicht die Rede ...
Sorry. Habe gedacht, Du kannst Gedanken lesen ;)

Zitat
Ausserdem sollte sich hier der Umstieg auf LS lohnen
Ich würde das gerne einfach über eine Eingabeumsetzung lösen, verschachtelte Gruppen benutzen wir mW nicht.

Zitat
Schleife
Ja, danke, da hast Du wohl Recht - ich habe mich aber damit in der Formelsprache noch nicht so recht angefreundet. Wie würdest Du das angehen?
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: koehlerbv am 22.02.07 - 17:56:38
Ich würde das gerne einfach über eine Eingabeumsetzung lösen, verschachtelte Gruppen benutzen wir mW nicht.
Wirkliche Programmierer verwenden solcherart Konjunktive nicht, sondern rechnen immer mit dem schlimmsten!

Die Eingabeumsetzung kannst Du auch mit Script benutzen: Das PostRecalc Event ist Dein Freund.

Wenn Du doch mit @functions arbeiten willst:
Schleifen mit Formelsprache sind incl. Beispielen in der DesignerHelp sehr gut erklärt.

Bernhard
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 22.02.07 - 19:40:05
Zitat
Wirkliche Programmierer
Komm mal runter, Junge.

Zitat
PostRecalc Event
Danke für den Hinweis, daran habe ich nicht gedacht.
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 22.02.07 - 22:46:18
Wusst ich doch, dass das auch mit schlappem Skript funktioniert  ;D
Hier das Ganze noch einmal fürs Forum:

Code
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.
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: koehlerbv am 23.02.07 - 01:11:30
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
Code
@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
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: dirk_2909 am 23.02.07 - 07:42:44
..und noch so als Info:

@ifError gibt es ab R7 nicht mehr (funktioniert aber noch)  8) 
Es macht auch den Code unübersichtlich  ???

Titel: Re: Problem mit Gruppenauflösung
Beitrag von: jo@chim am 23.02.07 - 09:30:29
@koehlerbv:
Zitat
Ich bin kein "Junge"
Mein lieber Bernhard - Deine Bemerkung weiter oben, auf die ich mich damit bezogen habe, kam im Kontext entweder arrogant rüber oder provokativ. Oder beides. Insofern war die Re unter Gleichaltrigen schon angebracht, IMHO  :-*
Aber lassen wir das.

@Dirk: Ich finde die Notes-Formelsprache an sich schon immer etwas unübersichtlich (auch wenn ich inzwischen eingesehen habe, dass sich manche Dinge besser damit lösen lassen als mit LS).

Btw, auch wenn es an dieser Stelle etwas OT ist: was ist den der "7er Nachfolger" von @iferror?
Titel: Re: Problem mit Gruppenauflösung
Beitrag von: dirk_2909 am 23.02.07 - 10:57:40
Es gibt keinen Nachfolger!
Back to the roots  8)

@if( @IsError( Me ) ; You ; Me )