Hallo,
ich hab' da mal wieder ein Problem mit einem Agenten, der einfach nicht laufen will.
Der Agent ist zeitgesteuert und läuft über alle Dokumente in der DB.
Wenn ich ihn manuell aus der Agentenliste starte, tut er fein das was er tun soll.
Aber zeitgesteuert gibt er mir noch nicht mal einen Eintrag in der Log.
hier mal der Code, vielleicht fällt ja Jemanden auf, was ich dort falsch gemacht habe.
Was der Agent machen soll, muss ich wohl nicht extra schreiben, dass geht m.E. aus dem Code hervor.
Sub Initialize
On Error Goto Fehler
Dim session As New NotesSession
Dim db As NotesDatabase
Dim archiveDb As NotesDatabase
Dim collection As NotesDocumentCollection
Dim Doc As NotesDocument
Dim Doc2 As NotesDocument
Set db = session.CurrentDatabase
Set collection = db.AllDocuments
Dim Agent_gelöscht As Variant
Agent_gelöscht = False
Dim Archiv_erstellt As Variant
Archiv_erstellt = False
Print "Starte Agent "+"neues Archiv erstellen > 100.000 Docs"
ArchivDate = " bis "+Cstr(Day(Today))+"_"+Cstr(Month(Today))+"_"+Cstr(Year(Today))
If Collection.Count => 10 Then 'Agent läuft nur, wenn mindestens 100.000 Dokumente in der Datenbank sind
archiveServer$ = db.server
DB_Name = Strleftback(db.FileName,".") ' ".nsf" abtrennen
Set doc = collection.GetFirstDocument
If Not (Doc Is Nothing) Then
Set archiveDb = New NotesDatabase( "", "" )
archiveFile$ = "Archive\"+DB_Name+"_"+ArchivDate+".nsf"
End If
archiveDb.Title = Db.Title+"_"+ArchivDate
While Not(doc Is Nothing)
Set doc2 = collection.GetNextDocument(doc)
If Not archiveDb.IsOpen Then
If (Not(archiveDb.Open(archiveServer$, archiveFile$))) Then
Set archiveDb = db.CreateCopy( archiveServer$, archiveFile$ )
Archiv_erstellt = True
If Agent_gelöscht = False Then
Forall Agenten In ArchiveDb.Agents
If Agenten.Name = "neues Archiv erstellen > 100.000 Docs" Then
Call Agenten.remove 'Archivierungsagenten aus dem neuen Archiv löschen
Agent_gelöscht = True
End If
End Forall
End If
End If
End If
Call doc.CopyToDatabase( archiveDb ) 'Dokumente werden in das neue Archiv kopiert
Call doc.Remove(True) 'kopierte Dokumente werden im alten Archiv gelöscht
Set Doc = Doc2
Wend
If Archiv_erstellt = True Then
Dim Memo As New NotesDocument(db)
Memo.Form = "MainTopic"
Memo.Subject = "neues Bank-Archiv wurde erstellt"
Dim RTitem As NotesRichTextItem
Set RTitem = New NotesRichTextItem(Memo,"Body")
Call RTitem.AppendText("neues Bank-Archiv wurde erstellt.")
Call RTitem.AddNewline(1)
Call rtitem.AppendText("Link zur neuen Datenbank """+archiveDb.Title+""" ---> ")
Call rtitem.AppendDocLink(archiveDb, archiveDb.Title)
Call rtitem.AddNewline(1)
Call Memo.Send(True,"#Admins") 'Meldung an Admins, dass ein weiteres Archiv erstellt wurde
End If
End If
Exit Sub
Fehler:
Print Cstr(Err) + " inLine "+Cstr(Erl)
End Sub