Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Noman am 16.05.03 - 12:31:12
-
Moin zusammen,
ich habe folgendes Problem:
Ich habe eine Gruppe angelegt, in der mehrere Personen stecken. Jetzt möchte ich gerne diese Gruppe per Lotus Skript auflösen.
Ich benötige eine Aufstellung aller Personen, die sich in dieser Gruppe befinden.
Könnt ihr mir helfen?
Gruß,
Noman
-
könntest Du bitte mehr Infos liefern? Wo hast Du die Gruppe angelegt (im NAB?) und von wo aus soll wann diese Gruppe aufgelöst werden?
-
...ich habe die Gruppe im NAB angelegt. Dann habe ich die Gruppe in einem Profildokument angelegt. Alle Personen einzeln einzutragen, wäre ein zu großer Aufwand. Ich habe gesehen, das es auch eine Funktion in der Formelsprache gibt (@Implode). Genau das möchte ich auch in Skript lösen.
Die aufgelöste Gruppe möchte ich dann in ein Autorenfeld übertragen.
Vielen Dank schonmal und ich hoffe, das ich mich diesmal besser ausgedrückt habe.
Gruß,
Noman
-
hm..muß man in ein Autorenfeld die Gruppe in Einzelnamen auflösen? Ich denke nicht. Trag die Gruppe ein und teste mal.
-
Funktion in der Formelsprache gibt (@Implode). Genau das möchte ich auch in Skript lösen.
warum ist mir auch nicht so klar. Hier ist wie: http://www.openntf.org/Projects/CodeBin/codebin.nsf/81882682b238ec2685256be70008ecaf/6108013206bae00688256bdc000cbf3e!OpenDocument (http://www.openntf.org/Projects/CodeBin/codebin.nsf/81882682b238ec2685256be70008ecaf/6108013206bae00688256bdc000cbf3e!OpenDocument)
-
Hallo,
wie der Zufall so spielt, hab ich gerade gebaut:
Option Public
Option Declare
'Declarations
Type unames
name As String
nachname As String
vorname As String
End Type
Sub Initialize
Dim session As New notessession
Dim nlist List As unames
' Gewünschte Gruppe übergeben
Call get_member(session, "Administratoren", nlist)
' und namen ausgeben
Forall x In nlist
Print x.name
End Forall
End Sub
Function get_member(session As notessession, sg As String, nlist List As unames) As Variant
Dim nslist List As unames
Dim un As unames
Dim db As notesdatabase
Dim view As notesview
Dim dc As Notesdocumentcollection
Dim ndoc As notesdocument
Dim cutoff As New Notesdatetime("1.1.1990")
Dim sbeg As String
Dim sgroup As String
Dim s As String
Dim vy As Variant
Dim i As Integer
Set db = session.currentdatabase
' names nsf verbinden
Dim dbnab As New NotesDatabase( db.server, "names.nsf" )
If dbnab.isopen = False Then
Call dbnab.openWithFailover( "", "" )
End If
Set view=dbnab.getview("($VIMGroups)")
' Voreinstellung holen
sbeg = Trim(Ucase(sg))
If sbeg = "" Then
get_member = ""
Exit Function
End If
' Alle gruppen suchen
s= "Type = 'Group' & @UpperCase(@left(Listname;" + Cstr(Len(sbeg)) + ")) = '" + sbeg + "'"
Set dc = dbnab.search(s,cutoff,0)
Set ndoc = dc.GetFirstDocument()
While Not(ndoc Is Nothing)
sgroup = ndoc.listname(0)
s = "@rightback('" + sgroup + "'; '_')"
vy = Evaluate(s,ndoc)
Call get_Members(ndoc.listname(0), nlist, view, Ucase(vy(0)))
Set ndoc = dc.GetNextDocument(ndoc)
Wend
Exit Function
End Function
Sub get_Members(sname, nlist List As unames ,view As notesview, sgroup As String)
' rekursiv, sollte Member Gruppe sein, dan wird Sub rekursiv nochmals hochgeholt
Dim u As New NotesName(sname)
Dim nname As notesname
Dim doc As notesdocument
Dim pos As Integer
Set doc=view.getDocumentByKey(u.Abbreviated,False)
If Not doc Is Nothing Then
Forall item In doc.Members
Call get_Members(item,nlist,view, sgroup)
End Forall
Else
Set nname = New notesname(sname)
sname =nname.canonical
nlist(sname).name = sname
pos = Instr(nname.common, " ")
If pos <> 0 Then
nlist(sname).vorname = Trim(Left(nname.common, pos))
nlist(sname).nachname = Trim(Mid(nname.common, pos,50))
End If
End If
Exit Sub
End Sub
-
danke für das Script..beim Drüberschauen wird anscheinend abgefackelt, ob es sich auch um Gruppen mit Untergruppen handelt (geht glaube ich bis zu 6 Verschachtelungen maximal?) und es wird solange jede Untergruppe aufgelöst, bis man nur die Personen hat?
-
Hallo Rob, du hast richtig geschaut, die Gruppen werden rekursiv aufgelöst.
Gruß
-
... es reicht, die gruppe im autorenfeld einzutragen.