Lotus Notes FAQ Visit Our Sponsor!

Is there any way to prevent the user from deleting parent documents with child documents?

Put one of these techniques in the QueryDocumentDelete Event:

Stop all deletions if any documents have children

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
  Dim docsDelete As NotesDocumentCollection
  Dim docsChildren As NotesDocumentCollection
  Dim doc As NotesDocument
  Dim i%
  Set docsDelete = Source.Documents  ' Selected documents
  ' Check selected documents for children
  For i = 1 To docsDelete.Count
    Set doc = docsDelete.GetNthDocument( i )
    Set docsChildren = doc.Responses
    ' If children then cannot continue
    If docsChildren.Count > 0 Then
      Msgbox "Some of the selected documents have responses." + Chr(13)  "No deletions were made."
      Continue = False
      Exit Sub
    End If
  Next
  ' No children found - OK to delete
  Continue = True
End Sub


Prompt for user to continue if some documents have children

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
  Continue = False  ' deletions will be done by this script, so don't let Notes do it
  Set docsDelete = Source.Documents  ' Selected documents
  ' Check documents first
  For i = 1 To docsDelete.Count
    Set doc = docsDelete.GetNthDocument( i )
    Set docsChildren = doc.Responses
    If docsChildren.Count > 0 Then
      cHaveChildren = cHaveChildren + 1
    Else
      cDelete = cDelete + 1
    End If
  Next
  If cHaveChildren > 0 Then
    msg = msg & Chr(13) & Cstr( cHaveChildren) & " document(s) have responses and will not be deleted." & Chr(13)
  End If
  msg = msg & Chr(13) & "Do you wish to continue?"
  If Msgbox( msg, MB_YESNO+MB_ICONQUESTION, "Confirm Deletion" ) = IDYES Then
    For i = 1 To docsDelete.Count
      Set doc = docsDelete.GetNthDocument( i )
      Set docsChildren = doc.Responses
      If docsChildren.Count = 0 Then
        Call doc.Remove( True )
      End If
    Next
    ' No way to refresh view here, so prompt user to press [F9] to refresh view
    MsgBox("Press F9 to refresh view")
  End If
End Sub


Applies to Notes Versions: 4.5 4.6 5
Last Modified: May 23, 1997