Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: bandit am 17.03.04 - 14:10:56

Titel: Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finden
Beitrag 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
Titel: Re:Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finde
Beitrag von: koehlerbv am 17.03.04 - 15:40:14
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
Titel: Re:Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finde
Beitrag von: Axel am 17.03.04 - 21:57:11
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
Titel: Re:Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finde
Beitrag von: bandit am 18.03.04 - 09:28:19
Vielen Dank euch beiden, hat super geklappt!

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