1

我将一个操作按钮“更改为”,因此当某些用户按下此按钮时,我只需保存 Uidoc。我想删除这个文档,考虑到如果我不删除它,所有文档都将保存在 ALLdocument 视图中!

当我尝试删除文档(调用 doc.remove)时,我收到错误消息:“在 NotesUIDocument 实例化时无法删除 notesdocument”,所有这些都在文档的另一个操作按钮中。

另外,我想关闭 NotesDocument。我也尝试过类似的东西:

@Command([movetotrash]);
@Command([emptytrash]);
@Command([fileclosewindow]) but it doesn;t work. Thank you, Samir Akhtubir

我也这样尝试过:

 Sub Queryclose(Source As Notesuidocument, Continue As Variant)
   noteid$ = source.document.NoteID
   Delete source 
   Dim S As New notessession
   Dim db As notesdatabase
   Set db = s. currentdatabase
   Dim doc As Notesdocument
   Set doc = db.GetDocumentbyID(noteid$)
   Call doc.Remove(True)
 End Sub

但是如果我把这段代码放到刚刚创建的文档中,所有的文档都会被删除。然后我放入了名为“取消”的操作按钮的 QueryClose 中,但它不起作用。

那么,如何删除当前文档并在操作按钮中关闭窗口?

4

1 回答 1

1
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc as NotesDocument

'*** Get currently open document
Set uidoc = ws.CurrentDocument
'*** Save it, so we can later close it
'*** without prompt. You can also set
'*** the field SaveOptions to "0".
Call uidoc.Save()
Call uidoc.FieldSetText("SaveOptions","0")
'*** Get the backend document
Set doc = uidoc.Document
'*** Force closed the UI document
Call uidoc.Close(True)
'*** Delete the backend document
Call doc.Remove(True)

如果这不起作用,请在文档上设置删除标志。我通常使用“flagDelete”并将其设置为“是”。我已过滤所有视图以不显示此字段设置为“是”的任何文档。然后我有一个预定的代理,它将每小时或每天一次(取决于每天处理的文档数量)删除所有将“flagDelete”设置为“是”的文档。

这种方法还有另一个优点。您可以从 ACL 中删除删除访问权限,但仍允许用户通过设置标志来“删除”特定文档。然后,计划的代理会真正删除文档,并以删除访问权限运行。当然,您拥有的任何执行搜索或其他不基于视图的查找的代码也必须进行修改以排除文档。

于 2012-09-28T15:50:57.967 回答