0

因此,在 VB6 中,我支持循环遍历 Lotus Notes 数据库中所有视图的代码:

    For lngdomViewidx = LBound(domDatabase.Views) To UBound(domDatabase.Views)
         Set domView = domDatabase.Views(lngdomViewidx) ' note: this line right here is slow to execute

使用此方法按索引检索对视图的引用所需的时间似乎与视图中的文档数量成正比。这段代码只是循环通过 Notes 数据库来构建所有视图名称的列表。在非常大的数据库上,这可能需要几分钟。有没有更快的方法来获取这些信息?

谢谢!

4

2 回答 2

2

这不是一个非常有效的方法,不。

请改用下面的代码。它是 Lotusscript,但在 VB 中应该几乎相同。我没有测试它,只是从生产数据库中复制它并修改它以查找视图而不是像我原来的表单一样...

Dim ncol As NotesNoteCollection
Set ncol = db.CreateNoteCollection(True)    
Call ncol.SelectAllNotes(False)
ncol.SelectViews = True
Call ncol.BuildCollection
noteID = ncol.GetFirstNoteId
For i = 1 To ncol.Count
    Set doc = targetdb.GetDocumentByID(noteID)
    MsgBox "view = " + doc.GetItemValue("$Title")(0)
    noteID = ncol.GetNextNoteId(noteID)
Next
于 2013-05-30T05:28:53.960 回答
0

Karl-Henry 是绝对正确的:NotesNoteCollection 确实是循环所有视图的最快方法。但是你可以通过改变循环来显着加速你的代码。您可以执行以下操作,而不是使用其索引打开每个视图:

Forall view in db.Views
  'Do whatever you want
End Forall

使用索引访问 Lotus Notes 集合中的元素意味着它始终必须从头开始计数,而使用 forall- 循环直接访问下一个元素...

于 2013-05-30T06:18:49.377 回答