Autor Thema: Trash in eigene Applikation  (Gelesen 4098 mal)

Online tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
Trash in eigene Applikation
« am: 08.06.20 - 11:12:20 »
Hallo, es soll ein papierkorb in einer eingenen Applikation implementiert werden.
Habe einen Folder ($trash) erstellt, dann die DB Eigenschaften Softdeletion eingeschaltet.
Aber beim löschen eines Dokumentes mit DEL bleibt das Dokument in der Ansicht, wird nur das x vorne für gelöscht angezeigt.
Warum verschwindet das Dokument nicht in den Folder $trash ?
Gruß Thomas
« Letzte Änderung: 09.06.20 - 16:14:11 von tfrenz »
Gruß
Thomas

Offline shiraz

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 646
  • Geschlecht: Männlich
Gruß
Christian

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Trash in eigene Applikation
« Antwort #2 am: 08.06.20 - 12:13:58 »
verstehe ich nicht, das Markieren mit X ist doch ein normales Verhalten beim Löschen ...

Man benötigt aber eine Ansicht vom Typ "enthält gelöschte Dokumente", um die weich gelöschten Dokumente zu sehen.
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Trash in eigene Applikation
« Antwort #3 am: 08.06.20 - 17:54:23 »
Das Standardverhalten einer Notes- Applikation ist:

1. Markieren - Entfernen - Häkchen dran.
2. F9 oder Datenbank verlassen - Dokument verschwindet aus der Ansicht
3. WENN Softdeletion aktiviert ist, dann taucht das Dokument im Ordner "($Trash)" in einer bestimmten Ansicht auf, die -wie Erik schreibt- mit dem Typ "enthält gelöschte Dokumente" erstellt wurde. Wenn Softdeletion NICHT aktiviert ist, dann ist danach das Dokument wirklich weg.

Die Maildatenbank "tweaked" diesen Prozess, indem Sie den QueryDocumentDelete- Prozess mit Continue = False abbricht, und stattdessen die Dokumente direkt mittels NotesDocument.Remove löscht. Dadurch glauben viele Entwickler, dieses Verhalten wäre "normal" bei Softdeletions. Ist es aber nicht...
« Letzte Änderung: 09.06.20 - 11:20:10 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Trash in eigene Applikation
« Antwort #4 am: 09.06.20 - 10:29:47 »
Naja nicht ganz ;)

denn es gibt keinen Ordnertyp für "gelöschte Dokumente". Diese Typ-Auswahl wird nur beim Erstellen einer Ansicht angeboten und Mail-DBs arbeiten mit der Softdeletion von Notes, wenn das mal anders war, dann muss das schon sehr lange her sein.
Wenn man die Softdeletion- Eigenschaft der Mail-DB entfernt, dann wird immer sofort gelöscht.

Die Mail-DB besitzt einen Ordner "($Trash)", aber damit wird nur das Drag & Drop der Dokumente in den Papierkorp "simuliert", dieser Ordner ist ist leer wenn man ihn direkt öffnet. Weiche Löschungen, in der Mail-DB, befinden sich in der Ansicht "($SoftDeletions)".
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Online tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
Re: Trash in eigene Applikation
« Antwort #5 am: 09.06.20 - 10:34:43 »
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.
Gruß
Thomas

Offline Tode

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Trash in eigene Applikation
« Antwort #6 am: 09.06.20 - 11:18:27 »
@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
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...   
« Letzte Änderung: 09.06.20 - 11:22:22 von Tode »
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Offline jBubbleBoy

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.276
  • Geschlecht: Männlich
Re: Trash in eigene Applikation
« Antwort #7 am: 09.06.20 - 15:54:49 »
@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
Gruss Erik :: Freelancer :: Notes, Java, Web, VBA und DomNav 2.5 / NSE 0.16
--
Nur ein toter Bug, ist ein guter Bug!

Offline Tode

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 6.870
  • Geschlecht: Männlich
  • Geht nicht, gibt's (fast) nicht... *g*
Re: Trash in eigene Applikation
« Antwort #8 am: 09.06.20 - 16:08:04 »
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...
Gruss
Torsten (Tode)

P.S.: Da mein Nickname immer mal wieder für Verwirrung sorgt: Tode hat NICHTS mit Tod zu tun. So klingt es einfach, wenn ein 2- Jähriger versucht "Torsten" zu sagen... das klingt dann so: "Tooode" (langes O, das r, s und n werden verschluckt, das t wird zum badischen d)

Online tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 242
  • Geschlecht: Männlich
Re: Trash in eigene Applikation
« Antwort #9 am: 09.06.20 - 16:13:46 »
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
Gruß
Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz