Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bandit am 17.03.04 - 14:10:56
-
Ich habe bis jetzt folgende Routine in einen Agenten eingebaut, um beim zum Löschen markieren eines Dokumentes, ebenfalls alle Antwortdokumente zu finden und diese ebenfalls zum Löschen zu markieren (ispDeletionFlag=9).
Nun möchte die Routine so erweitern, dass sie auch die Antwort auf Antwort Dokumente usw. findet. In der Notes Hilfe steht, dass man dazu die Funktion rekursiv aufbauen muss. Weiss jemand wie das hier aussehen muss?
'-- Es wird geprüft ob das Dokument zum Löschen ('Softdelete') markiert worden ist
If (docCurrent.GetItemValue("ispDeletionFlag")(0) = "9") Then
'-- Es werden alle Antwortdokumente gesucht und diese ebenfalls zum 'Softdelete' markiert
Set dcResponses = docCurrent.Responses
Set docResponse = dcResponses.GetFirstDocument
While Not (docResponse Is Nothing)
Set docTempDoc = dcResponses.GetNextDocument(docResponse)
'-- ispDeletionFlag wird auf 9 gesetzt, womit das Dokument als gelöscht gekenzeichnet ist
Call docResponse.ReplaceItemValue("ispDeletionFlag","9")
Call docResponse.save(True, False)
Set docResponse = docTempDoc
Wend
End If
-
Schau' Dir mal diesen Thread an ... Du brauchst dann nur 'ne View dafür ...
http://www.atnotes.de/index.php?board=3;action=display;threadid=14502;start=0 (http://www.atnotes.de/index.php?board=3;action=display;threadid=14502;start=0)
HTH,
Bernhard
-
Hi,
hier hab ich eine Routine die auch Antwort-auf-Antwort - Dokumente löscht. Die hab ich aus einem meiner Agenten rauskopiert.
Da du nur zum Löschen markieren willst mußt du die Routine etwas anpassen. Sollte aber keine Problem darstellen.
Sub DeleteChilds(doc As NotesDocument)
Dim responses As NotesDocumentCollection
Dim tmpDoc As NotesDocument
Dim dummy As NotesDocument
Set responses = doc.Responses
Set dummy = responses.GetFirstDocument
While Not (dummy Is Nothing)
Set tmpDoc = responses.GetNextDocument(dummy)
Call DeleteChilds(dummy)
Call dummy.Remove(True)
Set dummy = tmpDoc
Wend
End Sub
Beispielaufruf:
...
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument
Call DeleteChilds(doc)
Call doc.Remove(True)
...
Axel
-
Vielen Dank euch beiden, hat super geklappt!
Hab einfach meine Routine in eine Sub gepackt und den rekursiven Aufruf von Axel eingefügt.