Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant) Dim dc As NotesDocumentCollection Dim doc As NotesDocument Dim j As Integer Set dc = Source.Documents
For j = 1 To dc.Count Set doc = dc.GetNthDocument(j) If (doc.responses.count <> 0) Then Messagebox "HOV HOV" Continue = False End If Next End Sub
Ovenstående kode skulle gerne hindre at dokumenter med underdokumenter slettes. Det virker fint men hvis jeg så sletter det underliggende dokument. Melder den stadig at der er underliggende dokumenter.
Jeg ville lave et view med alle db'ens docs, og hvor 1. kolonne indeholder @Text($Ref). OK, så ville jeg i QueryDocumentDelete tage DocumentUniqueID fra doc'et, der er ved at blive slettet og så bruge det til at forsøge et opslag i det før omtalte view. Ok, hvis det giver resultater, så findes der underdokumenter... Hvis ikke, så ZAP !
Hvis blot et dokument af de markerede ikke må slettes melder continue False. Prøv at slette et dokument nederst i hierakiet - så burde din kode da virke fint nok. Alternativt, hvis du ønsker at alle af de markede dokument faktisk bliver slettet må du loop igennem din collection og fjerne markeingen fra alle dokumenter der har response, og når det er gjort så loope gennem de resterende og slette dem.
Jeg forsøger nu at slette Parent, men den melder stadig at jeg er ved at slette et dokument med underdokumenter. Det er som om den ikke opdager at underdokumentet er væk.
Det bedtyder med andre ord at Notes ikke vedligeholder en intern tabel over responses ved sletning. Eller kunne det være at der er andre response-dokumenter tilstede? Hvad sker der når du kører Responses igennem og udskriver værdier fra dokumenterne? For du så fejl?
En anden ting er at du bør undgå metoden .GetNthDocument. Lotus har indrømmet at metoden aldrig skulle være lavet. Hvis du har store dokumentsamlinger, så bliver den til sidst MEGET langsom. Brug hellere "Set doc = Coll.GetNextDocument( doc )" istedenfor.
Det lyder underligt :-| Lav en (tom) kopi af basen opret et par dokumenter, og kør processen igennem med debuggeren slået til. Og jogii har ret....... "do as follows instead".... ;-)
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant) Dim dc As NotesDocumentCollection Dim doc As NotesDocument Dim j As Integer
Set dc = Source.Documents Set doc = dc.GetFirstDocument
While Not( doc Is Nothing ) If (doc.responses.count = 0) Then Set doc = ddc.GetNextDocument (doc) Else Messagebox "HOV HOV" Continue = False Set doc = Nothing End If Wend End Sub
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.