函数返回NotesDocumentCollection为空

时间:2015-04-21 11:09:03

标签: lotusscript

我有一个返回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个文档。

1 个答案:

答案 0 :(得分:3)

文档集合消失的原因是相关的NotesView vw对象已经消失,因为它在函数中定义。 NotesDocumentCollection基于NotesView。当NotesView被销毁时,NotesDocumentCollection也会被销毁。

在函数外部设置NotesView vw,并将其用作参数而不是NotesDatabase db