Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Gogun_Beokz am 06.07.06 - 13:41:15
-
Hallo Zusammen,
ich hab im Forum mir schon einige Threads angeschaut aber nichts gefunden was richtig passt. Ich möchte einfach nur das der Benutzer beim drücken der entfernen Taste direkt gefragt wird ob die Dokumente aus der Datenbank gelöscht werden sollen oder nicht. Ohne F9 zu drücken oder die Datenbank zu verlassen, ich habe dazu folgendes geschieben.
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim ws As New notesuiworkspace
Dim uiview As notesuiview
Dim view As NotesView
Dim doccoll As notesdocumentcollection
Dim db As notesdatabase
Set uiview = ws.CurrentView
Set view = uiview.View
Set db = source.Database
Set doccoll = source.documents
Call doccoll.RemoveAll(True)
Call ws.ReloadWindow
End Sub
Hier lösche ich das Dokument direkt, habe zuvor versucht einfach einen view.refresh zu machen oder einen Workspace.reload durchzuführen. Jedoch kommt dann nicht die Abfrage. Also habe ich mir gedacht, lösche ich die Dokumente einfach direkt ohne Abfrage (Skript oben). Man drückt nun entf und schon verschwindet das Dokument... drückt man nun jedoch F9 dann wird man gefragt ob das Dokument aus der Datenbank löschen will. Klickt man auf "nein" ist es trotzdem weg da ichs schon gelöscht habe. Das hat jetzt auch nichts mit dem Hacken "wiederherstellbare Löschungen zulassen" zu tun.
Hat jemand ne Idee?
-
Call notesUIWorkspace.ViewRefresh
Würd ich mal so vorschlagen :)
Oder vor dem Löschen die gelöscht Markierung vom Dokument entfernen.
-
Danke,
also das mit dem ws.viewrefresh habe ich ausprobiert wollte aber nicht funktionieren. Die andere Idee ist gut aber funktioniert bei mir nicht vielleicht habe ich aber auch irgentwas falsch gemacht:
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim ws As New notesuiworkspace
Dim uiview As notesuiview
Dim view As NotesView
Dim doccoll As notesdocumentcollection
Dim db As notesdatabase
Set uiview = ws.CurrentView
Set view = uiview.View
Set db = source.Database
Set doccoll = source.documents
Call uiview.DeselectAll
Call doccoll.RemoveAll(True)
Call ws.ReloadWindow
End Sub
-
Probier es mal mit ws.ViewRefresh nach dem Löschen :)
-
ne macht keinen Unterschied... ist mir nicht ganz klar was das ViewRefresh so macht nach meiner Erfahrung...
Garnichts!
-
Eine mögliche Lösung wäre folgendes.
Füge eine Aktion in deine Ansicht ein, die dir die Dokumente aus der DB löscht.
Du kannst das auch als gemeinsame Aktion machen, wenn du die Aktion in mehreren Ansichten brauchst.
Der Code könnte ganz grob so aussehen:
Dim ws As New notesuiworkspace
Dim doccoll As notesdocumentcollection
Dim db As notesdatabase
Set db = source.Database
Set doccoll = dbUnprocessedDocuments
If MessageBox("Wollen Sie wirklich löschen", 36, "Löschen") = 6 Then
Call doccoll.RemoveAll(True)
End If
Im QueryDocumentDelete zeigst du dem User einen Hinweis an, das er bitteschön über die Aktion löschen soll.
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Messagebox "Zum Löschen von Dokumenten benutzen Sie bitte die Aktion 'Löschen'" _
& Chr$(10) & "aus der Symbolleiste oder unter dem Menü Aktionen." , 64, "Löschen"
Continue = False
End Sub
Axel