Ganz, ganz falsch:
Im QueryDocumentDelete werden Löschanforderungen abgefangen zur weiteren Behandlungen. Wenn Du dort eine Löschanforderung auslöst, rufst Du damit logischerweise gleich wieder das QueryDocumentDelete aus (vor allem, da @Command ([MoveToTrash]) ein Frontend-Befehl ist und genau dieser QueryDocumentDelete auslöst).
Zu Deinen Fragen:
a) nein
b) nein
Die Frage lautet ganz anders: Hast Du Deine DB korrekt für Softdeletions vorbereitet? Hast Du eine Ansicht, die wirklich nur gelöschte Dokumente aufnimmt? Dein Problem liegt offensichtlich auf einer anderen Ebene. Bitte auch die DesignerHelp hierzu erneut studieren.
Bernhard
FIELD loesch:=loesch;
@SetField("loesch"; "1" );SELECT @All
Vielleicht etwas einfacher:
Ich habe eine Ansicht "Papierkorb" und angehakelte Dokumente werden per Agent dahin verschoben.CodeFIELD loesch:=loesch; @SetField("loesch"; "1" );SELECT @All
Bei Bedarf können die wieder reanimiert werden.
Vielleicht denkst Du doch eher über Klaus' Vorschlag nach (und bestimmt nicht nur Klaus und ich gehen solche Wege). Du erreichst den gleichen Effekt, Du bist zudem unabhängig von Datenbank-Eigenschaften der Herr des Geschehens - musst aber natürlich dann auch noch für Designelemente sorgen, die dann das endgültige Löschen ermöglichen / erleichtern.
und diesen Agenten rufe ich über das "Querydocumentdelete" auf
Wenn Du das Drücken der [Entf]-Taste abfangen willst, musst Du im QueryDocumentDelete das Löschen abfangen und die entsprechenden Flags in den jeweiligen Dokumenten setzen !!
Also:
1. Continue = False !!
2. Collection der zu "löschenden" Doks holen
3. Jedes dok verarbeiten und Flag setzen.....
For i = 1 To Source.Documents.count
Set doc = Source.Documents.GetNthDocument(i)
set doc = coll.GetFirstDocument
While not doc is Nothing
...
Set doc = coll.GetNextDocument( doc )
Wend
Besser:Codeset doc = coll.GetFirstDocument While not doc is Nothing ... Set doc = coll.GetNextDocument( doc ) Wend
Dim ws As New notesuiworkspace
Dim coll As NotesDocumentCollection
Dim doc As notesdocument
Set coll=source.Documents
Set doc =coll.getfirstdocument
While Not doc Is Nothing
doc.Remove(True)
Set doc=coll.GetNextDocument(doc)
Wend