返回 NotesDocumentCollection 的函数为空

Function Returning NotesDocumentCollection is Empty

我有一个 returns NotesDocumentCollection 函数。当置于调试中时,我可以看到 collection 包含 70 个文档,当进程退出该函数时,collection 为空。有谁知道为什么 collection 丢失了所有文件?

例如(代码截图)

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 个文档。

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

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