2013-06-24 63 views
2

我有一個項目,我們正在爲SSRS 2008R2創建自定義報告生成器。該項目允許用戶從數據庫中選擇字段,然後在報表服務器上創建並存儲RDL。 對於初步的概念驗證嘗試,我們一直在使用XMLText編寫器來生成XML文件。雖然這可以起作用,但這似乎非常麻煩,而且我對模式如何被生成爲100%無懈可擊也沒有太多信心。第二次嘗試實際上是使用RDL中生成的類作爲我的對象模型。在這裏卡住的地方几乎沒有關於如何使用這個對象的文檔。 MSDN has a tutorial更新模型,但它在概念上非常基礎。如何使用從RDL模式生成的報告類創建RDL

我正在尋找關於首選方法的一些指導。 1)繼續使用XML生成 2)使用RDL對象創建報告 3)我也考慮過使用SSRS端點來創建虛擬報告並將其存儲在服務器上,然後使用RDL對象模型來更新報告必要的字段,組等。

我還沒有測試過第三個選項,但它似乎會最大限度地減少創建文檔的編碼量。

感謝您的任何建議或想法

回答

1

我剛剛建立,創建從報告模板和一個存儲過程的SSRS報告的程序。

我正在使用RDLObjectModel來創建報告。和RDLSerializer允許將報告保存到文件或報告服務器。我首先從我們的報表服務器通過SSRS Web服務加載報表模板,將服務器報表反序列化爲RDLObjectModel。然後,我爲報告字段派生參數,並從存儲過程派生字段以生成報告數據集。

我碰到的問題是,我無法序列化報告對象,以便能夠將其保存到服務器或文件中,因爲在RDL2008中RDLSerializer是私有的。然後,我偶然發現一篇文章,爲我節省了很多麻煩。 http://ucodia.fr/2011/10/advanced-reporting-services-part2-rdl-serializer/

這是使用XMLTextWriter更好的方法。這應該足以讓事情滾動。

+0

感謝您的意見。我也讀過這篇文章,我認爲這是我將要使用的方法。我選擇不使用RdlSerializer,因爲它依賴於其他程序集(如文章所述)。相反,我正在使用本MSDN文章建議的方法,只使用XMLserialization將rdl添加回ssrs存儲區http://msdn.microsoft.com/en-us/library/aa337428%28v=sql.105%29 .aspx再次感謝您澄清方法 – rlcrews

+0

我也讀過這篇文章。我開始嘗試使用RDLSchema構建報告,但與使用RDLObjectModel相比,它看起來並不直觀。正如在[鏈接](http://msdn.microsoft.com/en-us/library/1f0a1d46-6d6d-4f67-b51e-06dbbbffacf9)...這樣的代碼對我個人來說看起來不是很友好:'Dim reportItems As List(Of ItemsChoiceType118)=新建List(ItemsChoiceType118)(m_report.ItemsElementName)'和'DirectCast(m_report.Items(index),StringLocIDType).Value =「New Report Description」' – Eric