subreport cannot be shown

進行開發時,做了一個子報表,嵌在主表中,并且整個project是一個dll, 此dll會被plugin到一個host中去。在本機試都顯示沒有問題,但是將它移到另外一台機器就 顯示"Error: subreport cannot be shown"的錯誤。
首先這個錯誤信息太籠統了,必須找具體的錯誤信息。上網查過,出現這種錯誤只有三種可能性:
1. 找不到指定的subreport
2. 沒有給subreport設定datasource
3. 如果subreport需要傳遞參數,即沒有傳遞
到底是哪一種錯誤?這里有一種方法就是在調試狀態下當顯示"error:subreport cannot be shown"時,回到VS下面打開output查看錯誤信息,寫的赫然是: Warning: An error occurred while executing the subreport 'subreport1': The report definition for report 'Books' has not been specified (rsErrorExecutingSubreport)之類的話.
原因何在?找了許久,原來是如果你在設計的時候在設定主表下面的那個子表時,通過選擇下拉表的方式選擇,它只是一個reportname, (當然此subreport是以資源嵌入的方式),而不是一個完全的namespace, 所以在runtime的時候,reportviewer找到這個主表下面引用的是一個Books, 它會試圖從當前的可執行程序中去查找有沒有Books.rdlc, 當然是沒有了,因為它在單獨的一個Dll中,所以在手工在指定子表的combox中輸入完成的namespace即可了!
但是不這么寫,在本機可以,在另外一台機器就不行的原因還是想不清楚,最初懷疑是reportview.dll的版本不一樣,(的確是不一樣,我的是8.0.50727.762, 另外一台是8.0.50727.42),但我將我本機的copy過去,還是不work, 不管怎樣了,這樣先work再說吧
原文地址:https://www.cnblogs.com/sdikerdong/p/975163.html