雖然工做經驗至關的長,可是以前在SSRS上尚未象今天這樣的經驗。這只是工做經驗的一點記錄。sql
1. 定義DataSet數據庫
定義DataSet的時後,能夠採用Text的方式。用Text的方式能夠用一段比較複雜的DB script來作複雜處理。能夠在SSMS那裏寫好DB script,調試好再copy paste到Text框裏。Text框和SSMS那裏的略有差異,在Text框裏,若是一個@xxx形式的變量沒有相應的declare, 則會被自動定義成一個參數(成爲報表的參數和Query的參數,並且系統自動將這兩個參數鏈接起來)。而這個特性在SSMS裏是不存在的。SSMS的數據庫腳本要求全部的變量都有declare。因此若是你但願某些變量成爲SSRS裏的一個參數,再copy paste的時候,能夠把這些變量的declare去掉,再拷貝過去。服務器
2. Custom code網絡
SSRS是基於VB的。Custom code必須寫VB代碼。可是這個地方不象Visual studio那裏能夠進行語法提示。 咱們在Visual Studio建立一個VB.net 的工程,能夠在Visual Studio寫好Function的代碼。編譯好。再copy paste到Custom code框中。ide
調用Custom code中定義的Function, 在報表中寫Code.<Functionname>(parameters)idea
3. 輸出Excel時出現hiding row, merged rowspa
在網絡上找了一下。仍是微軟官方的一個knowledge page寫得比較清楚。默認爲inch或者釐米爲單位,在設計器裏會出現不少小數點後不少位的小數。微軟說這是由於轉換成excel時,轉換器用的是points爲單位,除不近時,就會用hiding row來補償。咱們要用points爲單位,能夠避免hiding row。定義高度和寬度的時候,用10pt,2pt之類的。.net
4. 輸出Word時選擇正確的Page size設計
首選在Report property裏選擇好Page size, 若是是Letter, 寬8.5inch, 高11inch, 定義好白邊margin上下左右,好比各1inch, 那麼在設計器裏,Body的寬度就是8.5 - 1 -1 = 6.5inch, 高度是11 - 1 -1 = 9inch。因而選擇Body, 再在屬性框裏設定其Width, Height。這樣設定的報表,輸出成Word時就是默認用的Letter紙張。調試
5. Subreport could not be shown錯誤的調試
Subreport could not be shown可能由於不少緣由產生。咱們不能簡單地認爲是某種緣由。其實一個最根本的解決辦法就是將報表部署到SSRS 服務器上,而後訪問報表,當問題顯現後,咱們能夠到SSRS服務器上 C:\Program Files\Microsoft SQL Server\#SSRS Instance Name#\Reporting Services\LogFiles目錄找到log文件。看log文件裏的詳細錯誤信息。這樣你就能夠知道出現錯誤的根本緣由了。從而針對性的解決。固然了,這個解決辦法是針對RDL的,RDLC的報表是沒法直接用這個辦法的。除非你把RDLC轉成RDL。
6. 一個SQL server Split string的腳本
在實際工做中用到了這個。存儲過程返回的是一個用分割符分割的串。因此這個大量的用這個小巧的方法。
declare @Input varchar(max) set @Input = '9,5,2,4,65,7,89,4,2,3,24,33,98' declare @delimiter varchar(max) set @delimiter = ',' declare @sql varchar(max) set @sql = 'select ''' + REPLACE(@Input, @delimiter, ''' as stringValue union all select ''') + ''' as stringValue' exec(@sql)
這裏用到了replace和union all的主意。比起那些專門寫一個function的idea,相對來講輕量一些。