mit Hilfe eines Kollegen aus unserer Entwicklung nutzen wir nun folgenden Code für den Agenten:
-----------------------
Option Public
Option Explicit
Sub Initialize
'#
' Agent findet alle Dokumente in der names.nsf, die eine "1" in dem
' Feld "PhoneNumber_6" (entspricht "Pager Number") haben,
' holt sich daraus die Abbreviated-Namen und schreibt diese in das
' Feld "Members" der Gruppe "Mitarbeiter".
'#
Dim NamesDB As NotesDatabase
Dim dateTime As New NotesDateTime("12/01/94")
Dim Coll As NotesDocumentCollection
Dim sSuchString As String
Dim Doc As NotesDocument
Dim oNameOwner As NotesName
Dim aVerteiler() As String
Dim nCounter As Integer
nCounter = 0
Set NamesDB = New NotesDatabase( "domino/server", "names.nsf")
sSuchString = "PhoneNumber_6='1'"
Set Coll = NamesDB.Search(sSuchString, dateTime, 0)
Msgbox Trim(Str(Coll.Count)) + " Mitarbeiter gefunden." + Chr(13) + "Ok für weiter...."
If Coll.Count > 0 Then
Redim Preserve aVerteiler(Coll.Count)
Set Doc = Coll.GetFirstDocument()
While Not Doc Is Nothing
Set oNameOwner = New NotesName(Doc.GetItemValue ( "FullName" )(0) )
If oNameOwner.Abbreviated = "" Then
Msgbox "Keinen Abbreviated-Namen gefunden bei: " +Doc.GetItemValue ( "FullName" )(0)
Else
aVerteiler(nCounter) = oNameOwner.Abbreviated
nCounter = nCounter +1
End If
Set Doc = Coll.getnextdocument(Doc)
Wend
Else
Msgbox "Es wurden keine Dokumente gefunden!"
Exit Sub
End If
sSuchString = "ListName='Mitarbeiter'"
Set Coll = NamesDB.Search(sSuchString, dateTime, 0)
If Coll.Count = 1 Then
Set Doc = Coll.GetFirstDocument()
Doc.replaceItemValue "Members", aVerteiler
Doc.Save True, False,True
Msgbox "Das Feld Members der Gruppe Mitarbeiter wurde erfolgreich neu geschrieben." + Chr(13) + "Programmende."
Else
Msgbox "Abbruch!" +Chr(13) + "Die Gruppe Mitarbeiter wurde nicht eindeutig gefunden!" + Chr(13) + "Programmende."
End If
End Sub
----------------------------
Vorschläge zur Optimierung sind gerne willkommen ;-)