0

我有一个视图,顶部有一个名为Delete

我想从视图中删除所有选定的文档;为此,我使用了:

Dim session As New NotesSession
Dim workspace As New NotesUIWorkspace
Dim database As NotesDatabase
Dim documentCollection As NotesDocumentCollection

Set database=session.CurrentDatabase
Set documentCollection=database.UnprocessedDocuments


If documentCollection.Count=0 Then
    Msgbox "No documents selected ",,"warning"
Else 

    userChoice=Msgbox ("Delete" & Cstr(documentCollection.Count) & " documents?",64+100, _
    "Confirm...")   

If userChoice=6 Then
    Call documentCollection.RemoveAll(True)
            Call workspace.ViewRefresh
End if

但是,如果我只想删除一些文档(从所有选定的文档中。从视图中)可以说文档Value = YESValue的文本字段在哪里?

我尝试声明:

    Dim ui As NotesUIDocument
    Dim doc As NotesDocument
    Set doc=ui.document

但我得到消息:Object variable not set。所以我想我必须使用 NotesDocumentCollection 来引用文档?如何?

谢谢你的时间!

4

2 回答 2

3

您的错误消息与您的问题无关......错误消息来自将文档设置为统一的uidoc。你需要Set ui = ws.CurrentDocument在你的代码中有一个地方,当然要声明 ws:Dim ws as New NotesUIWorkspace

但是对于您的问题,您根本不需要 ui-document。要仅删除部分选定的文档,请循环浏览集合并仅删除符合条件的文档:

Dim doc as NotesDocument
Dim nextDoc as NotesDocument
Set doc = documentCollection.GetFirstDocument()
While not doc is Nothing
  Set nextDoc = documentCollection.GetNextDocument(doc)
  if doc.GetItemValue( "Value" )(0) = "Yes" then
    call doc.Remove(True)
  end if
  Set doc = nextDoc
Wend

或者您将集合缩减为仅包含符合您的条件的文档,然后删除整个集合:

Call documentCollection.FTSearch("[Value] = Yes",0)
Call documentCollection.RemoveAll()

但请注意:使用 FTSearch 减少了集合,根据数据库的 FT 索引的设置,也可能会得到“当然是”或“是”-> 不是很可靠。

于 2013-10-01T09:06:26.047 回答
1

您需要遍历文档集合中的文档,然后单独处理它们。这是一个使用您的 documentCollection 变量的示例循环:

Dim doc As NotesDocument
Set doc = documentCollection.GetFirstDocument
While Not(doc Is Nothing)
    ' Do stuff

    ' Get next document
    Set doc = documentCollection.GetNextDocument(doc)
Wend
于 2013-10-01T08:53:39.913 回答