Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Tina am 27.04.04 - 13:17:45

Titel: Löschen im Agenten
Beitrag von: Tina am 27.04.04 - 13:17:45
Hallöchen!
Ich hab da so n Problem mit einem Agenten. Der User löscht ein Dokument dieses wird aber in den, nur für Admin sichtbaren, Papierkorb verschoben, also Soft delete.
Nun hab ich mir nen Agenten gebastelt, der alle Doks im Papierkorb, die ein bestimmtes Alter haben löscht. Das erste Dok mit diesen Bedingungen wird gelöscht danach fehlt mir nur der Aufhänger in meiner DocumentCollection.
Könnt ihr mir da vielleicht nen kleinen Denkanstoss geben?

Hier der Code:
Sub Initialize

Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim hilfdoc As NotesDocument
Dim strSuche As String
Dim dateTime As notesdatetime   
   
Set dateTime = New NotesDateTime("")
Set db = session.CurrentDatabase
searchFormula$ = "rpDocStatus = ""Papierkorb"""
Set dc = db.Search(searchFormula$,dateTime,0)    
Set doc = dc.GetFirstDocument

While Not(doc Is Nothing)
   If (doc.rpBisDatum(0) - Today() = 0) Then
      Set hilfdoc = dc.GetNextDocument(doc)
      doc.Remove(1)
   End If
   If (hilfdoc Is Nothing) Then
      Set doc = dc.GetNextDocument(doc)
   Else
      Set doc = hilfdoc
   End If
Wend
End Sub

In der Zeile Set hilfdoc = dc.GetNextDocument(doc) schreibt er nix in die Variable.  ??? ???
Kann er das nicht, oder hab ich da nen Fehler drin?? Ich denk mir mal dass es daran liegt.

Danke schonmal
Gruß Tina.
Titel: Re:Löschen im Agenten
Beitrag von: klaussal am 27.04.04 - 13:26:23
... versuchs mal mit "getfirstdocument", weil das vorgängerdoc gelöscht wurde, verliert er wohl den bezug zum nächsten.
Titel: Re:Löschen im Agenten
Beitrag von: Tina am 27.04.04 - 13:32:22
Fängt er dann nicht weider von vorne an??

Was soll?? Ich versuchs mal! Danke für die schnelle Antwort  ;)
Titel: Re:Löschen im Agenten
Beitrag von: Driri am 27.04.04 - 13:32:41
Eine andere Möglichkeit wäre, die Dokumente erst in einen Ordner zu packen, am Ende des Agents dann alle Dokumente aus dem Ordner zu fischen und zu löschen.
Titel: Re:Löschen im Agenten
Beitrag von: klaussal am 27.04.04 - 13:46:02
... ich bevorzuge immer dafür eine ansicht. dann kann man/frau sich bei bedarf die docs vorher ansehen, die gelöscht werden sollen.
Titel: Re:Löschen im Agenten
Beitrag von: Tina am 27.04.04 - 13:49:39
Die Doks stehen alle in der Ansicht Papierkorb. Die können dort entweder vom Admin wiederhergestellt oder schon gelöscht werden. Nach spätestens 90 Tagen sollen die Doks aber in die ewigen Jagdgründe verschwinden! Hab in dem geposteten Skript nur testhalber die Doks von heute gelöscht.
Titel: Re:Löschen im Agenten
Beitrag von: Glombi am 27.04.04 - 14:13:59
Es geht viel einfacher:

Sub Initialize

Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim hilfdoc As NotesDocument
Dim searchFormula As String
Set db = session.CurrentDatabase
searchFormula = {rpDocStatus = "Papierkorb" & rpBisDatum = @Today}
Set dc = db.Search(searchFormula$,Nothing,0)    
call dc.RemoveAll(true)
End Sub


Ich habe einfach den Searchstring erweitert: Dort die Abfrage, ob das Datum erreicht ist.
Die NotesDocumentCollection hat eine Methode, alle Dokumente zu löschen.
Das NotesDateTime für Search braucht man nicht - besser ist hier sowieso Nothing.

Andreas
Titel: Re:Löschen im Agenten
Beitrag von: Tina am 27.04.04 - 14:16:20
Super DANKE!
Werd ich direkt mal ausprobieren!

Ihr seid echt die besten!! ;D :-*
Titel: Re:Löschen im Agenten
Beitrag von: Tina am 27.04.04 - 14:26:41
Habs ausprobiert und es funktioniert einwandfrei!
Hab die Searchformula noch ein bisschen umgebogen, um auch andere Zeiträume abzufragen: searchFormula = {rpDocStatus = "Papierkorb" & (rpBisDatum - @Today) = 0} --> wobei die 0 für die Dauer steht!
Nochmal Danke!