Domino 9 und frühere Versionen > Entwicklung

Agent > Dokumente aus Ansicht löschen

(1/1)

scipio:
Hallo zusammen,

ich habe eine Ansicht (DeleteDocs), in der Dokumente angezeigt werden, die älter sind als das heutige Datum. Ein periodischer Agent soll nun alle Dokumente löschen, die länger als X Tage abgelaufen sind (X wird in einem Profildokument hinterlegt, zZt 30).

Mein Agent sieht so aus:


--- Code: ---Sub Initialize

Dim vTermin As Variant
Dim intTageNachAblauf As Integer

Dim thisdb As NotesDatabase
Dim Session As New NotesSession
Dim doc As NotesDocument
Dim killdoc As NotesDocument
Dim SourceView As NotesView

Set thisdb = session.CurrentDatabase
Set SourceView = thisdb.GetView( "DeleteDocs")
Call SourceView.Refresh

'Tage nach Ablauf aus ProfilDok holen
Call GetProfilwerte("GlobalsDelete","","") 'Rückgabe in die Variable jb_key

'Das erste Dokument der Ansicht holen
Set doc = SourceView.GetFirstDocument

While Not (doc Is Nothing)

Set killdoc = doc
Set doc = SourceView.GetNextDocument (killdoc)

vTermin = killdoc.EndDatum
intTageNachAblauf = Abs(vTermin(0) - Now())

'Alle Dokumente löschen, die größer als der Wert des Profildokumentes sind
If intTageNachAblauf > jb_key Then
Call killdoc.Remove(False)
End If

Wend  'While Not (doc Is Nothing)

End Sub

--- Ende Code ---

In der Ansicht stehen folgende Werte:

Dok 1 (45 Tage abgelaufen)
Dok 2 (45 Tage abgelaufen)
Dok 3 (45 Tage abgelaufen)
Dok 4 (45 Tage abgelaufen)
Dok 5 (45 Tage abgelaufen)
Dok 6 (2 Tage abgelaufen)

Dachte eigentlich, der Agent löscht alle bis auf Dok 6. Nachdem der Agent seine Arbeit erledigt hat:

Dok 3 (45 Tage abgelaufen)
Dok 5 (45 Tage abgelaufen)
Dok 6 (2 Tage abgelaufen)

Warum fasst er die Dokumente 3 & 5 nicht an? Wo mache ich den Denkfehler im Code?

Danke schon mal ...

scipio:
Ich habe die Geschichte erst mal über einen kleinen Umweg gelöst. Die oben stehende Schleife löscht nicht, sondern füllt ein verstecktes Feld mit dem Wert 1. Eine neue Ansicht zeigt nur diese Dokumente an, die über die Scripterweiterung

   
--- Code: ---Dim vc As NotesViewEntryCollection

Set SourceView = thisdb.GetView( "SelectedDocs")
Call SourceView.Refresh

Set vc = SourceView.AllEntries
Call vc.RemoveAll(True)
--- Ende Code ---
   

"gekillt" werden.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln