Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Don Pasquale am 11.12.03 - 14:43:41
-
Hallo Leute,
ich habe eine DB in der ich für eine Dokument weiterleiten Funktion bislang den Adressdialog genutzt habe.
Allerdings soll das weiterleiten auf die personen beschränkt sein, die laut
ACL auf diese DB Zugriff haben.
Also mache ich eine Ansicht über alle Mitarbeiter und erstelle nun
für jeden Mitarbeiter in der ACL einen Eintrag.
Das Problem sind nun die Gruppen in der ACL, wie finde ich heraus, welche Personen in dieser Gruppe sind ?
Mein bisheriger Code :
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim DocA As NotesDocument
Dim view As NotesView
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView( "Mitarbeiterliste" )
Set doc = view.GetFirstDocument
While Not doc Is Nothing
Set docA = doc
Set doc = view.GetNextDocument(doc)
docA.remove(True)
Wend
' ******************************** '
Set db = session.CurrentDatabase
Dim acl As NotesACL
Dim Entry As NotesACLEntry
Set acl = db.ACL
Set Entry = acl.GetFirstEntry
While Not Entry Is Nothing
If entry.IsGroup Then
Messagebox entry.Name & " ist eine Gruppe."
Else
If entry.IsPerson Then
Messagebox entry.Name & " ist eine Person."
Gosub EintragErstellen
Else
Messagebox entry.Name & " ist weder Gruppe noch Person."
End If
End If
Set Entry = ACL.GetNextEntry( Entry )
Wend
Exit Sub
' ******************************** '
EintragErstellen:
Dim NewDoc As NotesDocument
Dim item As Notesitem
Set NewDoc = db.CreateDocument
NewDoc.Form = "Mitarbeiter"
Dim userName As New NotesName(entry.name)
Set item = Newdoc.AppendItemValue( "Mitarbeiter",username.common )
Call NewDoc.save(True, True)
Return
' ******************************** '
End Sub
-
Aua, dabei ist der Thread noch soo jung
http://www.atnotes.de/index.php?board=7;action=display;threadid=12804
-
So und nun funktioniert das Ganze auch und doppelte
werden auch rausgelöscht.
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim DocA As NotesDocument
Dim view As NotesView
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView( "Mitarbeiterliste" )
Set doc = view.GetFirstDocument
While Not doc Is Nothing
Set docA = doc
Set doc = view.GetNextDocument(doc)
docA.remove(True)
Wend
' ******************************** '
Set db = session.CurrentDatabase
Dim acl As NotesACL
Dim Entry As NotesACLEntry
Set acl = db.ACL
Set Entry = acl.GetFirstEntry
While Not Entry Is Nothing
If entry.IsGroup Then
'Messagebox entry.Name & " ist eine Gruppe."
Gosub GRUPPEAUSLESEN
Else
If entry.IsPerson Then
'Messagebox entry.Name & " ist eine Person."
Call eintragePerson(entry.name)
Else
'Messagebox entry.Name & " ist weder Gruppe noch Person."
End If
End If
Set Entry = ACL.GetNextEntry( Entry )
Wend
Exit Sub
' ******************************** '
GRUPPEAUSLESEN:
Dim memfield As Variant
Dim nd_db As notesdatabase
Dim g_doc As notesdocument
Set db = session.currentdatabase
server$ = db.server
Set nd_db = New notesdatabase("","")
flag = nd_db.open(server$, "names.nsf")
Set view = nd_db.getview("Groups")
Set g_doc = view.getdocumentbykey(entry.name)
memfield = g_doc.getitemvalue("members")
Forall X In memfield
ename$ = X
'Messagebox (ename$)
Call eintragePerson(ename$)
End Forall
Return
Function eintragePerson ( User As String) As Integer
Dim view As NotesView
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set session = New NotesSession
Set db = session.CurrentDatabase
Dim NewDoc As NotesDocument
Dim item As Notesitem
Dim userName As New NotesName(User)
Set view = db.GetView("Mitarbeiterliste")
Set dc = view.GetAllDocumentsByKey(username.Common, True)
If dc.Count = 0 Then
Set NewDoc = db.CreateDocument
NewDoc.Form = "Mitarbeiter"
Set item = Newdoc.AppendItemValue( "Mitarbeiter",username.common )
Call NewDoc.save(True, True)
End If
view.refresh
End Function