Lotus Notes / Domino 10 > ND10: Entwicklung
Trash in eigene Applikation
tfrenz:
Hallo und danke für sie Informationen :)
Das mit den DB Eigenschaften, dem View $Softdeletion habe ich nun verstanden und auch so umgesetzt.
Aber wenn ich nun ein Dokument lösche, wird es nicht von der aktuellen Ansicht entfernt.
Erst nach F9 drücken.
Was muss ich hier noch angeben.
Tode:
@Erik: Ich weiss nicht, woher Du diese Sicherheit nimmst... ich habe gerade im 11er Default Mailtemplate geschaut. Da steht im QueryDocumentDelete (u.a.) folgender Code:
--- Code: ---Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
Dim preRNext, SupressDeleteDialogs As Integer, MtgOwner As Integer, result As Integer
Dim tmpOwner As String, strFormNm As String, strToDoMessage As String
Dim iCalDocstoDel As NotesDocumentCollection,curDoc As notesdocument 'variables to support ical deletion logic
Dim profileDoc As Notesdocument
Dim e As Variant, v As Variant
Dim versionNumber As Integer
Const INVAL_DOCUMENT = "Zum Ausführen dieser Aktionen müssen Sie ein Instanzdokument auswählen."
Const ERR_TITLE = "Fehler"
...
If Strcompare(strViewName, "Rules") = 0 Then
...
Elseif Strcompare(strViewName, "($Sent)") = 0 Then
...
For i=1 To source.documents.count
Set doc = source.documents.GetNthDocument(i)
If (nAction = 1) Then
If doc.isuidocopen Then
noteid = doc.noteid
Delete doc
Set doc = source.database.getdocumentbyid(noteid)
doc.remove True
Else
' Remove All
Call source.documents.RemoveAll(False)
Exit For
End If
Elseif nAction=2 Then
Call source.documents.stampall("ExcludeFromView", "S")
Exit For
End If
ws.viewrefresh
Next
ws.viewrefresh
Continue = False
BadDoc:
If Err = 4241 Then
Messagebox DocPreviewMessage, MB_ICONEXCLAMATION, DocPreviewTitle
Exit Sub
End If
' if C&S View or Note is Open in UI then....
Elseif strViewName = "" Or IsCSView(strViewName) Or IsToDoView(strViewName) Then
...
End if
If Not( profiledoc Is Nothing ) Then Delete profiledoc
continue=False
If (fRefresh = True) Then Call ws.viewrefresh
If RefreshCalendar = True Then Call ws.ViewRefreshByDBid(source.Database.ReplicaID,"($Calendar)",True)
Exit Sub 'backwards compatibility
End Sub
--- Ende Code ---
An jeder Stelle, an der "tatsächlich" gelöscht wird, ist ein zusätzliches "doc.Remove" oder "source.documents.RemoveAll(False)" und ein "continue = false"...
Im selben Code ist übrigens auch die Abfrage auf "@IsSoftDeleteEnabled" drin, und wenn nicht, dann reagiert der Code tatsächlich anders...
Das heisst: ohne diesen Code werden die Mails IMMER bis zum Drücken von "F9" in der Ansicht bleiben, und erst danach in den Trash wandern... Also genau das Verhalten, was tfrenz bescvhreibt...
jBubbleBoy:
@Torsten: Ein doc.Remove, in Kombination mit einem continue = false, ändert nichts an einer gesetzten Softdeletion-Datenbankeigenschaft und etwas anderes habe ich nie behauptet ;)
Wenn man das F9 drücken umgehen möchte, dann hilft genau diese Kombination von remove und continue=false. Muss in das Datenbankereignis Querydocumentdelete gesetzt werden:
--- Code: ---Call source.Documents.Removeall(true)
continue = False
On Error Resume Next
Dim ws As New NotesUIWorkspace
ws.Viewrefresh
--- Ende Code ---
Tode:
Aber dann versteen wir uns ja... Genau das wollte ich ja sagen: Das normale Verhalten ist: Dokument bleibt da mit Häkchen, egal ob Softdeletion oder nicht... Wenn man das Häkchen nicht will, dann muss man im QueryDocumentDelete eingreifen...
tfrenz:
Hallo,
Danke n jBubbleBoy, das mit Viewrefresh war das was mir gefehlt hat.
Jetzt funktioniert es so wie es sein soll.
Auch Danke an Tode, für die exakte Erklärung
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln