Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: pl001 am 24.03.05 - 13:43:27

Titel: Querydocumentdelete
Beitrag von: pl001 am 24.03.05 - 13:43:27
Hallo,

ich möchte, dass in meiner Datenbank Dokumente in allen Ansichten und Ordnern nach dem drücken der ENTF-Taste und eine Bestätigung sofort gelöscht werden.

Ich habe zwar schon einige Lösungsansätze hier im Forum gefunden, doch da ich mich mit LS bisher noch nicht auskenne, komme ich mit probieren nicht wirklich weiter.

Viele Grüsse

Peter
Titel: Re: Querydocumentdelete
Beitrag von: diali am 24.03.05 - 13:57:54
Code
antwort = Msgbox("Sollen wirklich alle markierten Dokumente gelöscht werden?", 292, "Frage")
If antwort <> 6 Then
   continue = False
   Exit Sub
End If

Dim dc As Notesdocumentcollection
Set dc = Source.Documents
Call dc.RemoveAll(True)
Titel: Re: Querydocumentdelete
Beitrag von: pl001 am 24.03.05 - 14:55:48
Danke,

aber wie würde dann "Call dc.RemoveAll(True)" ausehen?

Gruß
Peter
Titel: Re: Querydocumentdelete
Beitrag von: diali am 24.03.05 - 15:02:59
die Msgbox ist die Abfrage, wird die nicht mit "Ja" beantwortet wird das Script unterbrochen.

In dc stehen alle markierten Dokument und ein "Call dc.RemoveAll(True)" löschte diese Dokumente.

Call dc.RemoveAll(True) ... löscht schon alles
Titel: Re: Querydocumentdelete
Beitrag von: pl001 am 24.03.05 - 15:06:37
Ok, habe ich jetzt verstanden, nur leider werden die Dokumente nur mit dem Papierkorb markiert. Wie kann man die ausgewählten Dokumente gleich löschen?

Gruß
Peter
Titel: Re: Querydocumentdelete
Beitrag von: diali am 24.03.05 - 15:12:06
Du könntest noch ein
Code
dim ws as new NotesUIWorkSpace
ws.ViewRefresh
daranhängen.
Titel: Re: Querydocumentdelete
Beitrag von: pl001 am 24.03.05 - 15:16:05
Danke, nur leider fragt er nach dem Schliessen der DB jetzt nocheinmal noch, ob die Dokumente gelöscht werden sollen, obwohl sie ja bereits gelöscht wurden.

Gruß
Peter
Titel: Re: Querydocumentdelete
Beitrag von: diali am 24.03.05 - 15:21:14
dann bleibt nur eine Schlaife über alle Dokumente und ein "Call doc.Remove(True)" . Allerdings musst Du diese Zeile bei Notes 6.x dann durch "Call doc.RemovePermanently(True)" ersetzen.
Titel: Re: Querydocumentdelete
Beitrag von: pl001 am 24.03.05 - 15:36:41
Hmm, wie schon gesagt, kenne ich mich mit LS nicht aus.
Über ein Beispielscript wäre ich sehr dankbar.


Gruß
Peter
Titel: Re: Querydocumentdelete
Beitrag von: diali am 24.03.05 - 15:53:29
Code
antwort = Msgbox("Sollen wirklich alle markierten Dokumente gelöscht werden?", 292, "Frage")
If antwort <> 6 Then
   continue = False
   Exit Sub
End If

Dim dc As Notesdocumentcollection
Set dc = Source.Documents
dim doc as NotesDocument
dim doc_temp as NotesDocument
set doc = dc.getFirstDocument

while Not doc is Nothing
  set doc_temp = dc.GetNextDocument(doc)
  Call doc.Remove(True)
  set doc = doc_temp
wend
ist aber langsamer als dc.RemoveAll(True)
Titel: Re: Querydocumentdelete
Beitrag von: TMC am 24.03.05 - 19:25:33
Was hier unbedingt noch rein sollte ist ein ErrorHandling.

Außerdem würde ich auch nicht über NotesDocumentCollection gehen, sondern auch wie oben schon gezeigt die einzelnen Docs in einer Schleife abarbeiten.

Warum?
Du kannst mit einem Counter arbeiten und über ein ErrorHandling sauber abfangen, wenn z.B. ein User 5 Dokumente zum löschen ausgewählt hat, aber nur z.B. bei 3 Dokumenten löschen darf, und bei den anderen 2 Dokumenten nur Leser ist.