A common use for LotusScript is to control the deletion of documents. I found myself often wanting to assure that when a user deletes a document, all of that document's descendants were removed as well.
The following piece of code can be called from anywhere you have a handle to a NotesDocument object. You pass this sub a NotesDocument and it will delete that document as well as all descendants.
Sub DeleteHierarchy(docToDelete As NotesDocument) %REM This code will delete a document and all of its descendants. PARAMETERS docToDelete - NotesDocument object the represents the NotesDocument to be deleted. RETURN Nothing is returned. %END REM Dim ndcResponses As NotesDocumentCollection Dim docResponse As NotesDocument ' docNextResponse is a pointer to the next document in the response collection. ' This is needed because the current response is removed before a call to GetNextDocument can be made. Dim docNextResponse As NotesDocument Set ndcResponses = docToDelete.Responses If ndcResponses.Count > 0 Then Set docResponse = ndcResponses.GetFirstDocument Do While Not docResponse Is Nothing Set docNextResponse = ndcResponses.GetNextDocument(docResponse) Call DeleteHierarchy(docResponse) Set docResponse = docNextResponse Loop End If Call docToDelete.Remove(True) End Sub
This was first published in April 2001