2010-08-25 50 views
0

我無法在內存中加載(幾個)Crystal的ReportDocuments的多個實例。使用下面的代碼:Crystal Reports最大活動實例

Dim sRPT As New ReportDocument 
sRPT.Load("PATH\TO\MY.RPT") 

Dim sRPTs As New List(Of ReportDocument) 
For i = 0 To 100 
    Dim sClone As ReportDocument = sRPT.Clone 
    sClone.Refresh() 

    sRPTs.Add(sClone) 

    Console.WriteLine("RPT Clonado " & i.ToString()) 
Next 
當我到達第74屆實例

,刷新()調用拋出了「報告加載失敗」異常。此外,即使直接調用.Load(path)方法也會發生相同的異常,並且會影響應用程序內的所有ReportDocumetns,無論我正在加載/刷新的RPT文件如何。

我正在使用Crystal XI R2,但是使用v12程序集(CR 2008)測試此代碼時也遇到了同樣的問題。

有沒有人偶然發現過類似的東西?所有這些實例的原因是爲每個用戶提供多個rpt文件的緩存報告,並且如果對此問題有一個不太令人討厭的解決方法,它很可能會保持原樣。

回答

0

我之前遇到過這種情況,AFAIK唯一的解決方法就是確保在完成報告後關閉報告。

+0

感謝您的快速發佈!我們不得不回顧報告模塊中的所有代碼,以備類似的問題。但是這個「報告緩存」旨在維護開放的隨時可用的實例,因此我們不需要在每次需要使用時都打開這些報告(我們使用的RPT永遠加載並且可能我們不會被允許改變它們),所以關閉*所有*緩存報告不是一個選項(如果有不必要的 - 我們部分清理緩存 - 永遠空閒 - 報告實例)。 再次感謝, Germán – 2010-08-25 16:56:57