Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet 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.
-
... versuchs mal mit "getfirstdocument", weil das vorgängerdoc gelöscht wurde, verliert er wohl den bezug zum nächsten.
-
Fängt er dann nicht weider von vorne an??
Was soll?? Ich versuchs mal! Danke für die schnelle Antwort ;)
-
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.
-
... ich bevorzuge immer dafür eine ansicht. dann kann man/frau sich bei bedarf die docs vorher ansehen, die gelöscht werden sollen.
-
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.
-
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
-
Super DANKE!
Werd ich direkt mal ausprobieren!
Ihr seid echt die besten!! ;D :-*
-
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!