Autor Thema: Routine um alle Antwortdokumente einschliesslich Antwort von Antwort zu finden  (Gelesen 1809 mal)

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
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
Greetz bandit

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline bandit

  • Aktives Mitglied
  • ***
  • Beiträge: 195
  • Geschlecht: Männlich
Vielen Dank euch beiden, hat super geklappt!

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

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz