Autor Thema: Mitglieder einer Gruppe auslesen (LotusScript)  (Gelesen 4075 mal)

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Mitglieder einer Gruppe auslesen (LotusScript)
« 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

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Mitglieder einer Gruppe auslesen (LotusScript)
« Antwort #1 am: 11.12.03 - 14:48:42 »

Offline Don Pasquale

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.390
  • Geschlecht: Männlich
  • Don Pasquale
    • Auf Verlorenem Posten
Re:Mitglieder einer Gruppe auslesen (LotusScript)
« Antwort #2 am: 11.12.03 - 15:42:29 »
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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz