注释文档集合和视图是否有限制?

时间:2017-09-01 04:28:13

标签: lotus-notes lotusscript

我尝试使用NotesView.AllEntries.Count来获取总文档(总计= 8,462)

但在我的for循环索引中总计

当我打印索引==>它显示为10975

enter image description here

程序会发生什么?以及如何解决这个问题?

非常感谢

编辑:这是我的代码。

(将当前数据库中的doc移至db历史记录)

它与文档冲突有关吗?

enter image description here

1 个答案:

答案 0 :(得分:1)

NotesView.GetNthDocument文档说“此方法仅访问视图中的顶级(主要)文档;排除响应文档。”

另外,@ melili绝对正确。可以这样想:大多数能够读写的人都知道他们的字母表的第一个字母和第26个数字,他们可以立即告诉你“H”之后的字母,但他们不知道第20个字母他们的头顶。问他们第20个字母,他们必须从你知道的数字(如“A”)开始,然后计入第20步。因此,在人类大脑中,字母表不是作为数组存储而是作为链表存储。 NotesView和NotesDocumentCollection是相同的。在大多数情况下,无论视图大小如何,GetNextDocument都会很快,但GetNthDocument最初会很快,而且速度越来越慢...... GetNthDocument(1000)从第一个文档开始计数到千...然后当你再次循环时它从第一个到第一百个... ...

而是使用以下模式:

Set doc = view.GetFirstDocument
Do Until doc Is Nothing
    'Do your thing here
    Set doc = view.GetNextDocument(doc)
Loop

...或者在你的情况下,如果你想做一些从视图中删除文档的东西......

Set doc = view.GetFirstDocument
Do Until doc Is Nothing
    Set docNext = view.GetNextDocument(doc) 'Get it early!
    'Do your thing here
    Set doc = docNext
Loop

这也具有处理响应文档的优势。

不是你问的,但我还建议你编写一个在主文档上工作的函数,然后在每个子文档上递归调用自己,然后让你的视图选择main文档。这样,您可以更加确定一次移动响应层次结构。

您可能想要做的另一件事是将NotesView.AutoUpdate设置为False。这将有助于事情进展得更快。