Удалить ответы при удалении главного док-та

morpheus

скриптописец
07.08.2006
3 915
1
#1
Вопрос
как автоматом включить удаление всех подчиненных документов (response) при удалении document?

Ответ
Код:
Set coll = db.UnprocessedDocuments 
If coll.Count>0 Then 

If Msgbox("Вы действительно хотите удалить "+Cstr(coll.Count)+" документов?",36,"") = 6 Then 
Set doc = coll.GetFirstDocument 
While Not doc Is Nothing 
Set TmpDoc = coll.GetNextDocument(doc) 
v = doc.Created 
If v <> 0 Then 
doc.Author = sess.USERNAME 
Call sess.UpdateProcessedDoc( doc ) 
Call doc.Save(True, True) 
' проверяем, нет ли у дока респонсов 
Set tmpcoll = doc.Responses 
If tmpcoll.Count > 0 Then 
If Not Msgbox("У выбранного документа есть респонсы"+Chr(10)+"Вы хотите удалить и их?",36,"") = 6 Then 
Msgbox "Удаление респонсов отменено" 
Else 
Call DeleteResponses (db, doc) 
End If 
End If 
Call doc.Lock 
Call doc.Remove(True) 
End If 
Set doc = TmpDoc 
Wend
Sub DeleteResponses (db As NotesDatabase, doc As NotesDocument) 
Dim ws As New NotesUIWorkspace 
Dim sess As New NotesSession 
Dim coll As NotesDocumentCollection 
Dim resp As NotesDocument 
Dim TmpResp As NotesDocument 
Dim v 

Set coll = doc.Responses 
Set resp = coll.GetFirstDocument 
While Not resp Is Nothing 
Set TmpResp = coll.GetNextDocument(resp) 
v = resp.Created 
If v <> 0 Then 
resp.Author = sess.USERNAME 
Call sess.UpdateProcessedDoc( resp ) 
Call resp.Save(True, True) 
Call DeleteResponses (db, resp) 
Call resp.Lock 
Call resp.Remove(True) 
End If 
Set resp = TmpResp 
Wend 

End Sub
Автор
ngg