Hallo cnm1,
es gibt einen Agenten in der DB, der Dir die Dokumente löscht.
Darüber hinaus hatten wir hier im Forum schon mal das Thema, dass man alte Dokumente in eine andere DB archiviert. Leider habe ich gerade den Thread nicht mehr gefunden.
Anbei der Code, mit dem es bei uns läuft. Die Archivdatenbank ist auch eine DB mit Reservierungs-Schablone.
Sub Initialize Dim s As New NotesSession Dim db As NotesDatabase Dim db_archiv As New NotesDatabase( "", "NameDerArchivDatenbank.nsf" ) Dim dc As NotesDocumentCollection Dim doc As NotesDocument Dim nextdoc As Notesdocument Dim tmpdt As New NotesDateTime("") Dim purgedate As New NotesDateTime ("Heute") Dim n As Integer Dim StartDate As Variant Dim OkToPurge As Integer Set db=s.CurrentDatabase Set dc=db.UnprocessedSearch("@Contains(Form;""Reservation"")", tmpdt,0)' Die folgende Zeile wurde auskommentiert, da alle Termine älter wie heute selektiert werden sollen' Call purgedate.AdjustDay (-2) Set doc=dc.GetFirstDocument While Not (doc Is Nothing) If doc.HasItem("$NoPurge") Then StartDate=doc.GetitemValue("$NoPurge") Else StartDate=doc.GetitemValue("StartDateTime") End If Forall eachstartdate In StartDate Dim tmpstartdate As New NotesDateTime(eachstartdate) If purgedate.TimeDifference(tmpstartdate)>0 Then OkToPurge=True Else OkToPurge=False Goto DoNextDocument End If End Forall If OkToPurge Then Call doc.CopyToDatabase(db_archiv) Set nextdoc=dc.GetNextDocument (doc) doc.Remove (True) Else Call s.UpdateprocessedDoc(doc) End If DoNextDocument: If doc Is Nothing Then Set doc=nextdoc Else Set doc=dc.GetNextDocument (doc) End If Wend End Sub
Damit ist die original-DB sauber und Du hast trotzdem noch die alten Reservierungen.
Wenn Du nur die alten Dokumente löschen möchtest, so kannst Du auch einfach den Agenten "purge Documents" aktivieren. In der Zeile mit
Call purgedate.AdjustDay (-2)
kannst Du bspw. auch eine Woche angeben. Dann steht anstelle -2 ein anderer Wert in Tage.
Grüße
Christian