Hallo,
ich habe ein Agenten geschrieben (der Code ist eventuell nicht optimal, versuch mich allerdings auch mit LS erst), der aus einem Mitarbeiterverzeichnis (eigene Entwicklung) aus gestartet wird. Das Dokument des Mitarbeiters wird geöffnet und anschließend der Agent gestartet.
Funktionsweise:
- Öffnen der Maildatenbank (momentan nur testdaten, später wird die datenbank anhand des notesnamen des userers aus dem mitarbeiterverzeichnis geladen)
- laden der ansicht ($All)
- öffnen der einzelnen dokumente (jedoch nur jene, die als memo gekennzeichnet sind und einen anhang besitzen)
- abrufen der anhänge (daten)
- ablegen der informationen in einer seperaten datenbank.
Mein Problem nun ist, dass der agent irgenwann abbricht mit der Meldung, dass die userdoc nicht gefüllt ist. Für mich ist das allerdings nicht verständlich, da ich ja mittels einem is Nothing abfrage ob die userdoc gefüllt ist oder nicht?
Habe auch versucht anhand der Dokumente, die geöffnet werden das Verhalten zu analysieren. Aber da ist nichts ungewöhnlich.
Eine Anmerkung hätte ich noch:
Wie zu sehen ist, sind weiter unten 3 Arrays fest dimensioniert. Die würde ich gerne über dynamische Arrays laufen lassen, hab es aber bis dato nicht hinbekommen. Vielleicht könnt ihr mir da den einen oder anderen Tipp geben.
Thx.
' Allgemein
Dim session As New NotesSession
Dim notesUsername As New NotesName(session.UserName)
' Mitarbeiterverzeichnis ++++++++++++++++++++++++++++++++++++++++++++++
Dim mvrzdb As NotesDatabase
Dim mvrzws As New NotesUIWorkspace
Dim mvrzuidoc As NotesUIDocument
Dim mvrzdoc As NotesDocument
Dim mvrzview As notesview
Set mvrzdb = session.CurrentDatabase
Set mvrzview = mvrzdb.GetView("Mitarbeiter nach Name")
Set mvrzuidoc = mvrzws.CurrentDocument
Set mvrzdoc = mvrzuidoc.Document
' Mitarbeiterdatenbank ++++++++++++++++++++++++++++++++++++++++++++++
Dim userws As New NotesUIWorkspace
Dim useruidoc As NotesUIDocument
Dim userview As NotesView
Dim userdoc As NotesDocument
Dim userdb As NotesDatabase
Dim userdbName As String
userdbName = "mail\testmaildb.nsf"
Set userdb = session.GetDatabase( "", userdbName )
Set userview = userdb.GetView("($All)")
Set userdoc = userview.GetFirstDocument
Dim rtitem As Variant
Dim sizeInBytes As Long
Dim sizeInMB As Long
Dim count As Integer
Dim sizeAll As Double
Dim aMailobjectTyp(10) As String
Dim aMailobjectName(10) As String
Dim aMailobjectSize(10) As String
' Neues LogDokument ++++++++++++++++++++++++++++++++++++++++++++++++
Dim newdb As NotesDatabase
Dim newws As New NotesUIWorkspace
Dim newuidoc As NotesUIDocument
Dim newdoc As NotesDocument
Set newdb = session.GetDatabase( "", "log_maildb.nsf")
While Not (userdoc Is Nothing)
If (userdoc.form(0) = "Memo") Then
count = 0
sizeAll = 0
I = 0
Set rtitem = userdoc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
If Not (Isempty(rtitem.EmbeddedObjects)) Then
Forall mailobject In rtitem.EmbeddedObjects
i = i+1
count = count + 1
sizeInBytes = mailobject.FileSize
sizeInMB = sizeInBytes / ( 1024 )
sizeAll = sizeInBytes + sizeAll
aMailobjectTyp(i) = (Right(mailobject.Source,3))
aMailobjectName(i) = mailobject.Name
aMailobjectSize(i) = sizeInBytes
End Forall
End If
End If
End If
Set userdoc = userview.GetNextDocument(userdoc)
If (count > "0") Then
Set newdoc = newdb.CreateDocument
newdoc.nachname = mvrzdoc.nachname(0)
newdoc.vorname = mvrzdoc.vorname(0)
newdoc.mailbetreff = userdoc.Subject(0)
newdoc.anhaengeAnzahl = count
newdoc.anhaengeGroesseGesamt = sizeAll
newdoc.anhangTyp = aMailobjectTyp
newdoc.anhangName = aMailobjectName
newdoc.anhangGroesse = aMailobjectSize
Call newdoc.Save(True,True)
End If
Wend
End Sub