我有一个返回NotesDocumentCollection的函数。当置于调试中时,我可以看到该集合包含70个文档,当进程退出该函数时,该集合则为空。有谁知道为什么收藏品会丢失所有文件?
例如(代码的快照)
Dim dc1 as NotesDocumentCollection
Set dc1 = returnDocColl(thisdb, key)
Function returnDocColl(db as notesdatabase, key as string) as NotesDocumentCollection
Dim vw As NotesView
Dim dc As NotesDocumentCollection
Set vw = db.getview("viewname")
If Not vw Is Nothing Then
Set dc = vw.Getalldocumentsbykey(key, True)
End If
Set returnDocColl = dc
End Function
在调试器中我可以看到dc包含70个文件,当设置returnDocColl时它还包含70个文件,但dc1设置它不包含任何文件。在函数结束和dc1设置之间,文档似乎丢失了。
我还用函数中的实际代码替换了调用函数的代码,并且预期dc1包含70个文档。
答案 0 :(得分:3)
文档集合消失的原因是相关的NotesView vw
对象已经消失,因为它在函数中定义。 NotesDocumentCollection基于NotesView。当NotesView被销毁时,NotesDocumentCollection也会被销毁。
在函数外部设置NotesView vw
,并将其用作参数而不是NotesDatabase db
。