Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Gogun_Beokz am 06.07.06 - 13:41:15

Titel: Löschen von Dokumenten ohne aktualisieren
Beitrag 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?
Titel: Re: Löschen von Dokumenten ohne aktualisieren
Beitrag von: 0xse am 06.07.06 - 13:47:30
Call notesUIWorkspace.ViewRefresh

Würd ich mal so vorschlagen :)

Oder vor dem Löschen die gelöscht Markierung vom Dokument entfernen.
Titel: Re: Löschen von Dokumenten ohne aktualisieren
Beitrag von: Gogun_Beokz am 06.07.06 - 14:26:19
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
Titel: Re: Löschen von Dokumenten ohne aktualisieren
Beitrag von: 0xse am 06.07.06 - 15:01:20
Probier es mal mit ws.ViewRefresh nach dem Löschen :)
Titel: Re: Löschen von Dokumenten ohne aktualisieren
Beitrag von: Gogun_Beokz am 06.07.06 - 16:06:57
ne macht keinen Unterschied... ist mir nicht ganz klar was das ViewRefresh so macht nach meiner Erfahrung...

Garnichts!
Titel: Re: Löschen von Dokumenten ohne aktualisieren
Beitrag von: Axel am 06.07.06 - 16:35:02
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