我尝试使用NotesView.AllEntries.Count来获取总文档(总计= 8,462)
但在我的for循环索引中总计
当我打印索引==>它显示为10975
程序会发生什么?以及如何解决这个问题?
非常感谢
编辑:这是我的代码。
(将当前数据库中的doc移至db历史记录)
它与文档冲突有关吗?
答案 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。这将有助于事情进展得更快。