2016年5月11日 星期三

Reporting Service 報表升級的問題

過去曾用過 VS2008 開發過好幾支 Reporting Service Server Report,因為有需求將這些報表改成 Local Report,而開發工具則是升級為 VS2010。比對了這兩個版本的差異,是副檔名不同,VS2008 的副檔名是 *.rdl ,VS2010 的副檔名則是 *.rdlc。所以,只要在副檔名加個 c 應該就可以了吧!

於是,我將 Certificate_Test.rdl 複製到 VS2010 的開發資料夾,再把檔名改成  Certificate_Test.rdlc, 並用 VS2010 去開啟它。


看起來,還好嘛,就讓他自己去轉換就好,於是按了「確定」!


看到「One or more errors encountered while loading the designer. The errors are listed below.」錯誤訊息,然後   就  ...   傻住了...   真的傻住了!

透由 Polly 的協助,參考了一篇由 prakash rao 所發表的文章「Microsoft Report Designer : Do you want to convert this report to RDLC 2008 format? Please click OK to proceed or Cancel to open it in the XML editor. 」,一步一步完成了轉換工作。

首先,從傻住的頁面開始,點選 「Edit Code」,就可以看到用 XML 所表示的內容。其實,不管是 *.rdl 也好, *.rdlc 也好,報表的內容都是用 XML 來定義的。在報表升級開發工具升級的過程中,難免會新增或刪除了 XML 的標籤或元素。先看到的,就是升級後被刪除的 「ReportSection」與「ReportSections」,可以用 Ctrl+F 打開搜尋視窗,找到那兩個標籤,因為每個標籤同時都會有起始與結束,所以都要刪除。



然後,再到最前面的第二行 Report xmlns



將它改成:

<Report xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition">


最後就按「存檔」。接著把剛剛編輯的報表都關掉,然後重新點選 Certificate_Tesst.rdlc,就可以看到正常的報表了。

因為我改成使用 Local Report 的方式,原先要傳給 Server Report 的參數已經不需要了,要記得到 Report Data 裡的 Parameters 刪除。


此外,因為我已不再使用 DataSource1,所以也順便刪除,然後在新增一個 DataSet。你可能會發現, DataSource1 竟然刪不掉,別擔心,點開你的 DataSource1,會發現裡面還會有 DataSet,先把裡面的所有 DataSet 都刪掉,然後就可以刪除 DataSource1 了。


參考:
01:Microsoft Report Designer : Do you want to convert this report to RDLC 2008 format? Please click OK to proceed or Cancel to open it in the XML editor. 

沒有留言:

張貼留言