Domino 9 und frühere Versionen > ND6: Entwicklung
Vererbung in Notes
smithy:
oh man,
ich sollte feierabend machen.
vielen herzlichen dank nochmal.
Marinero Atlántico:
Kann man nicht in 6 direkt die ganze Collection löschen:
--- Code: ---dc_child.removeAll(true)
--- Ende Code ---
Glombi:
Das geht auch schon in R5. Aber es müssen Antworten auf Antworten berücksichtigt werden, daher sprach ich von Rekursion...
Andreas
networkaccess:
Hallo, hier nochmal eine getestete Zusammenfassung - Mit Sub für rekursiven Aufruf...
'========================================================================================
' Dokumente mit Responses in View löschen
' Start über Action-Button in entspr. View
'========================================================================================
Sub Click(Source As Button)
On Error Resume Next 'Errorhandler
Dim workspace As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc_parent As NotesDocumentCollection 'Doc Collection Parent
Dim doc_parent As NotesDocument
Dim countresp As Integer
Set db = session.CurrentDatabase
Set dc_parent = db.UnprocessedDocuments 'von User gewähltes Doc (Cursorbalken in View)
Set doc_parent = dc_parent.getFirstDocument()
REM === Prüfen, ob Responses vorhanden sind
Dim dc_child As NotesDocumentCollection 'Doc Collection Children
Dim doc_child As NotesDocument
Set dc_child = doc_parent.Responses
Set doc_child = dc_child.GetFirstDocument
While Not (doc_child Is Nothing)
countresp = countresp + 1
Set doc_child = dc_child.getNextDocument(doc_child)
Wend
REM ===
REM === Wenn Responses vorhanden, Sub deleteChilds aufrufen
If countresp > 0 Then
Call deleteChilds(doc_parent) 'Aufruf Sub deleteChilds
End If
REM ===
Call doc_parent.RemovePermanently(True) 'Parent Doc löschen
Call workspace.ViewRefresh 'View aktualisieren
End Sub
'========================================================================================
' Routine, um Responses zu löschen (rekursiver Aufruf)
' doc_parent wird übergegen
'========================================================================================
Sub deleteChilds (doc_parent As NotesDocument) 'Parent übernehmen
Dim dc_child As NotesDocumentCollection 'Doc Collection Children
Dim doc_child As NotesDocument
Set dc_child = doc_parent.Responses
Set doc_child = dc_child.GetFirstDocument
While Not (doc_child Is Nothing)
Call doc_child.RemovePermanently(True)
Call deleteChilds(doc_child)
Set doc_child = dc_child.getNextDocument(doc_child)
Wend
End Sub
Axel:
Hi,
du kannst das Ganze auch im PostDocumentDelete-Event des Datenbank-Scriptes machen. Das gilt dann allerdings für alle Ansichten.
Sub Postdocumentdelete(Source As Notesuidatabase)
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
End Sub
Die benötigte DeleteResponseDocs - Routine 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
[*] Vorherige Sete
Zur normalen Ansicht wechseln