Domino 9 und frühere Versionen > Entwicklung

Löschen einer Dokumentenstruktur

(1/3) > >>

tuxie:
Hallo,

ich habe eine Frage, ich habe eíne Datenbank mit einer Dokomentenstruktur

Hauptdokument
Antwortdokument
Rückantwortdokument

Wie kann ich am besten, diese Struktur löschen gibt es da eine Funktion, kann man das mit Formeln machen oder nur mit LN Script.

Und gibt es eine möglichkeit das hertkömmliche Löschen zu Sperren.

TSchau Ingo

koehlerbv:
Zu Frage 1: Das müsstest Du etwas genauer erklären. Willst Du ausgehend von einem Haupt-Dokumente alle Responses löschen ? Oder von einem bestimmten Dokument aus alle Responses ? Oder wie ?

Zu Frage 2: Entweder, Du entziehst Deinen Usern das Löschrecht, oder Du klinkst Dich in das DatabaseScript/QueryDocumentDelete ein.

Bernhard

tuxie:
Hallo,

also ich möchte das Hauptdokument mit allen Antwortdokumenten löschen.

Das löschen soll quasie nur über die Löschfunktion die ich versuche zu implementieren machbar sein. So das nicht das Hauptdokument ohne die Antwortdokumente gelöscht werden.

Tschau Ingo

koehlerbv:
Dann ist QueryDocumentDelete die richtige Stelle. Das ganze ist selbstverständlich nur mit LS zu realisieren und muss rekursiv verlaufen:
- Ist es ein Dokument mit Responses (das braucht ja kein Hautpdokument sein - Responses können wiederum Responses haben)
- Wenn nein - keine Aktion erforderlich
- Wenn ja, bilde Collection aller Responses
- Doc für Doc in der Collection untersuchen: Hat dieses wiederum Responses ?
- Wenn ja: Wiederum Collection aller Responses bilden und weiter wie oben beschrieben
- Wenn nein: Dokument löschen.

HTH,
Bernhard

Axel:
Hi,

ich hab mal so was gebaut.

Im PostDocumentDelete - Event des Datenbank-Scriptes steht folgender Code:

   
   Dim collection As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim i As Integer
   
   Set collection = Source.Documents
   
   If collection.Count = 0 Then
      Exit Sub
   Else
      For i = 1 To collection.Count
         Set doc = collection.GetNthDocument(i)
         Call DeleteResponseDocs(doc)
         Call doc.Remove(True)
      Next  'For i = 1 To collection.Count
   End If  'If collection.Count = 0 Then
   

Unter dem (Options) -Abschnitt ist eingetragen (da die Routine DeleteResponseDocs in der Bibliothek Tools enthalten ist):
Use "Tools"


Die Routine selbst sieht so aus:

Sub DeleteResponseDocs (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 DeleteResponseDocs(dummy)
      Call dummy.Remove(True)
      Set dummy = tmpDoc
   Wend  'While Not (dummy Is Nothing)
   
End Sub

Axel

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln