Domino 9 und frühere Versionen > Entwicklung

Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finden

(1/1)

bandit:
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

koehlerbv:
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

HTH,
Bernhard

Axel:
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

bandit:
Vielen Dank euch beiden, hat super geklappt!

Hab einfach meine Routine in eine Sub gepackt und den rekursiven Aufruf von Axel eingefügt.

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln