2015-04-21 133 views
2

我有一個返回NotesDocumentCollection的函數。當放置在調試中時,我可以看到該集合包含70個文檔,當該過程退出該功能時,該集合然後是空的。有誰知道爲什麼集合會丟失所有文檔?函數返回NotesDocumentCollection爲空

例如(代碼的快照)

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 

當在調試器中我可以看到,直流含有70個文件,當returnDocColl設置它也包含了70個文件,但DC1設置它不包含任何文檔。文件似乎在功能結束和dc1設置之間丟失。

我也用函數中的實際代碼替換了調用函數的代碼,並且如預期的那樣dc1包含了70個文檔。

回答

3

消失文檔集合的原因是相關的NotesView vw對象因爲在函數中定義而不見了。 NotesDocumentCollection基於NotesView。當NotesView被銷燬時,NotesDocumentCollection也被銷燬。

在函數外部設置NotesView vw並將其用作參數而不是NotesDatabase db

+0

謝謝克努特,這確實使得很多感覺。 但上面的代碼只是實際功能的一小部分。該函數通過5個不同的數據庫循環嘗試定位文檔。由於它看起來有兩種不同的數據庫類型(實時和歸檔),因此它必須檢查兩個不同的視圖,具體取決於該數據庫中的哪一個。不是最好的,但它是一個我不得不適應的舊系統!如果我在聲明部分聲明瞭db和vw,那也能解決這個問題嗎? 我可以編輯的問題,包括實際的功能,如果有幫助? 再次感謝費 –

+0

是的,如果您在首次調用函數之前聲明並設置函數外部的dbs和視圖,應該解決該問題。 –

+0

謝謝克努特,工作! –