Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: tokio_city am 02.06.05 - 12:04:41

Titel: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 12:04:41
Hallo Notes Community,

auf der Suche nach einer Funktion, wie man Verteiler, die im Adressbuch stehen über eine Funktion ausliest und dabei Unterverteiler berücksichtigt, um dann letztlich eine Namensliste zurückzugeben, bin ich auf folgende Lösung gestoßen:
http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/79e19d7831735367852570050021e579?OpenDocument

Leider gibt es im Funktionsbereich (Function GetGroupMembers) in folgenden Zeile bei mir eine Fehlermeldung:
Set dbNAB = GetAddressBook()
Soweit ich weiss, sind doch die AddressBook properties wie folgt:
notesDatabaseArray = notesSession.AddressBooks

Mein Ziel ist es nun a) das Script zum Laufen zu bringen und b) über einen Button aus einer Ansicht heraus zu starten.
Könnt ihr mir da weiterhelfen?
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: dirk_2909 am 02.06.05 - 12:13:25
Hallo

Was genau ist dein Problem?

Was steht in der Funktion getAdressBook() ???

Dort liegt bestimmt der Fehler.

Dirk
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 12:14:10
"... gibt es ... bei mir eine Fehlermeldung:"

Das ist immer wieder nett für Hilfsbereite hier im Forum: Wir dürfen jetzt auch noch über die Fehlermeldung rätseln, die da wohl kommen könnte. Also muss man sich auch noch irgendwelchen Code von irgendwo aus dem Internet anschauen.
Okay, ich habe es mir angeschaut: Die Function GetAddressBook wurde von Anthony schlicht vergessen zu posten. Logisch, dass es dann ohne diese Function "eine Fehlermeldung" gibt.

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: dirk_2909 am 02.06.05 - 12:16:44
Hätte ich mir auch anschauen sollen.

Ist aber doch kein Problem sie kurz zu erstellen  ;)

Dirk
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 12:22:21
Sorry,

hätte ich natürlich richtig beschreiben sollen. Mein Fehler, Asche auf mein Haupt... aber ich bin noch lernfähig...  ;)
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 12:29:26
Ist aber doch kein Problem sie kurz zu erstellen  ;)

Das sehe ich genauso. Wer rekursiv mit group memberships umgehen will und sich dazu fremden Codes oder Algorithmen bedient (nicht unbedingt sträflich !), sollte zumindest wissen, wie er das gewünschte AdressBook instantiieren kann. Wobei gerade dieses ja nicht der einfachste Punkt ist und von den jeweiligen Gegebenheiten abhängt (Nur das EINE Server-NAMES.NSF oder mehrere ? Sollen lokale Repliken im offline-Betrieb berücksichtigt werden ? Usw. usf.).

Bernhard

PS: Nix gegen konkrete Fragen auf dem Wege dorthin ...
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 12:35:47
Hallo,

für meinen Bedarf soll nur auf ein Addressbuch zugegriffen werden und zwar auf den Standard, der bei mir cnnames.nsf heisst und direkt auf dem Server liegt, wo auch die Applikation läuft, von der das Script gestartet wird. Also keine Berücksichtigung von lokalen Repliken, keine Auswahl von X-Adressbüchern usw.
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: dirk_2909 am 02.06.05 - 12:39:28
Dann hast Du ja alles was Du benötigst  :) :
ServerName , Datenbankname
Set dbADR = New NotesDatabase( .....

Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 12:41:53
Standard, der bei mir cnnames.nsf heisst und direkt auf dem Server liegt

Standard ? Habe ich da was verpasst ? Standard ist NAMES.NSF.

Ansonsten gilt das, was Dirk gesagt hat: Schreib Dir die Function GetAddressBook, in der Du Deine gewünschte DB instantiierst, und gut ist.

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 12:47:30
Ok, ich habe das bisher so gemacht:
server$ = NotesDB.server
Set NotesDB_New = New notesdatabase("","")
flag = NotesDB_New.open(server$, "cnnames.nsf")
Set view = NotesDB_New.getview("Groups")
Set NotesDocument= Notesview.getdocumentbykey("mein_Verteiler")
Field = NotesDocument.getitemvalue("members")

Habe ich das richtig verstanden, dass ich das Script mit allen weiteren Angaben in eine neue Funktion einfüge und auf diese dann in getAdressBook(hier integrieren) referiere?
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 12:51:13
Wenn Du das in den bestehenden Code aus dem LDD einfügen willst: Nein, dann hast Du das nicht richtig verstanden.

Und nochmal: Warum heisst Dein Adressbuch eigentlich nicht NAMES.NSF, wenn es doch das Standard-PubNAB sein soll ?

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 12:58:45
Hallo Bernhard,

ich würde  - wie Du schreibst - ein neue Funktion erstellen, wo das Adressbuch angegeben wird. Dort könnte man im Bedarfsfall auch weitere Adressbücher zur Auswahl einfügen. Dann würde ich aus der Function GetGroupMembers auf die neue Funktion verweisen.

Zum Namen: Ich habe gerade mal nachgeschaut und Du hast recht,  cnnames.nsf ist doch nur eine Replik des Standard-PubNAB. In wie fern ist eigentlich der Name von Belangen?
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: dirk_2909 am 02.06.05 - 13:21:58
Du musst die Funktion "GetAddressBook()" erstellen.

Function GetAddressBook as NotesDatabase

strServer = "YourServerName/??(??"
strDB = "names.nsf" 'ODER ;-)
Set dbTmp = New notesdatabase(strserver , strDB)
if Not( dbTmp.Open ) Then
   call dbTmp.Open( (strserver , strDB)
end if

set GetAddressBook = dbTmp
Delete dbTmp

end FUnction


... so oder so ähnlich

Dirk
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: Thomas Schulte am 02.06.05 - 13:27:10
Alle verfügbaren Adressbücher bekommt man mit
adrbooks = session.AddressBooks
Und da ist das dann wurscht ob Namen.nsf oder cnnames.nsf oder hurlebautz.nsf
Gilt für Public Private und Directories und gibt es seit V5.05
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: Semeaphoros am 02.06.05 - 13:58:35
Im Prinzip ja, wobei ich meine, die Property ist für LS sicher älter als 5.0.5. Man darf allerdings nicht vergessen, dass viele, viele Applikationen "names.nsf" fest verdrahtet verwenden, um DAS Adressbuch zu bekommen. Ein Umbenennen, was spätestens seit R4 via den notes.ini Eintrag names.nsf möglich war, ist daher nicht besonders empfehlenswert.
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 15:28:45
Alle verfügbaren Adressbücher bekommt man mit
adrbooks = session.AddressBooks

Jo, und dabei bekommt man auch Adressbücher, die man eventuell gar nicht gebarauchen kann. Sooo einfach ist es dann in ernsthaften Umgebungen leider doch nicht ...

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: Thomas Schulte am 02.06.05 - 16:07:02
Alle verfügbaren Adressbücher bekommt man mit
adrbooks = session.AddressBooks

Jo, und dabei bekommt man auch Adressbücher, die man eventuell gar nicht gebarauchen kann. Sooo einfach ist es dann in ernsthaften Umgebungen leider doch nicht ...

Bernhard
Sorry Bernhard aber das sehe ich nicht so.
Da bekomme ich erst einmal alle Adressbücher dieser Session ohne Kopfstände machen zu müssen.
Hab ich die dann, kann ich ja immer noch die welche ich nicht will ausschließen. Also z.B. alle Privaten Adressbücher will ich nicht, dann mit der Eigenschaft b.IsPrivateAddressBook  in einer For Schleife die halt nicht hernehmen. Und wenn ich dann noch ausschließlich die haben will die einen bestimmten Namen haben kann ich das ja auch noch machen indem ich einfach den b.filename oder den b.filepath benutze und den gegen eine hinterlegte Liste prüfen lasse.

Also ist es doch soo einfach.
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 16:13:53
Nix gegen den Erhalt aller verfügbaren Adressbücher, Thomas. Mir ging es um die brauchbaren. Und da ist es schon nicht mehr so trivial, bei einer lokalen Installation von öffentlichen Adressbüchern doppelte zu erkennen und private von öffentlichen zu unterscheiden. Für absolute beginners zumindest.

Für uns beide ist es natürlich trivial. Der Anfänger sollte sich aber mit der Problematik erstmal auseinandersetzen und diese versuchen zu verstehen. Meinst Du nicht ?

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: Thomas Schulte am 02.06.05 - 16:18:25
Gut so kann ich die Aussage akzeptieren  8)
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 18:22:22
Hallo an alle Teilnehmer,

ich wollte mich noch für die rege Beteiligung bedanken und habe den Vorschlag von Dirk (Antwort 12) aufgenommen und für meine Verhältnisse erfolgreich angepasst, es wird übrigens in einem Adressbuch gesucht ;).
Dennoch weiss ich jetzt auch wie man alle Adressbücher ansteuert und wo die Probleme liegen können. Wieder einmal 'ne Menge dazu gelernt!

Eine letzte Frage habe ich aber noch, bevor ich den Thread auf erledigt stelle: Gibt es eine Begrenzung an Unterverteilern, bzw. Durchläufen, bis das Script "den Geist" aufgibt. Ich habe da mal was von sechs Ebenen/Unterverteilern gehört, ist das korrekt? - Ich hoffe, ich habe mich verständlich ausgedrückt...
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: Semeaphoros am 02.06.05 - 18:32:05
6 Levels "Group in Group" war das Limit in R4, seither ist es etwas komplizierter. Für solche Fragen hilft dieses Dokument (http://www.thenorth.com/northern.nsf/ac567d6535ab069785256a00004d66dc/4100857248b8b82185256d350058f7e4!OpenDocument), das von Andrew Pollak gepflegt wird.
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 18:59:07
Vielen Dank, damit ist auch meine letzte Frage - für heute - beantwortet... Iucundi acti labores.
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: koehlerbv am 02.06.05 - 20:29:32
Hier verwechselst Du Henne und Ei: Der Code bekommt kein Problem, aber Du kannst nur eine endliche Anzahl von Gruppen in Gruppen im PubNAB anlegen, damit diese dann vom Client oder vom Server noch aufgelöst werden können. Insofern hat das eine nichts mit dem anderen zu tun.

Bernhard
Titel: Re: ExpandGroup LotusScript NAB Group
Beitrag von: tokio_city am 02.06.05 - 20:43:06
Hallo Bernhard,

ich bezog mich auf Gruppen in Gruppen im PubNAB. Mir gings also um die Hennen in meinem Stall und nicht um die maximal produzierbaren Eier. Ich glaube das wars auch heute für mich... ;)