Reporting Services 報表開發
1. 設計報表
2. 部署報表
3. 測試報表
啟動Visual Studio 2008, 新創建報表項目,添加一個新的報表。
從工具箱中拖個Table到報表設計器中
自動彈出報表屬性對話框,新創建一個連接,類型選.NET Assembly,字符串為net.tcp://localhost:2908/ServiceManager
返回到報表屬性,准備輸入SQL查詢語句
找到QueryBuilder組件,打開,並選擇報表程序集,點擊類型下面的方法名後,在右邊的窗格中自動生成對應的SQL查詢語句
如果Always copy to the Clipboard已經打勾,查詢語句已經被復制到剪貼板中,在BIDS中Paste查詢語句,並點擊查詢
執行SQL查詢的效果如下
回到報表設計器,依此給Table組件的各個TextBox賦值,完成後,效果如下
如圖中所示,再到Report Header中添加Date Time,User Id,Page, Report Id四個屬性,並設置Table Header的字體為Bold
至此,報表已經完成,點擊Preview,查看效果
回到ERP應用程序中,打開Report Manager管理程序,選擇Add Report
選擇剛才制作的報表,等待一下,這個報表就被部署到服務器中
為了維護報表的統一用戶接口,支持不同的報表類型,自動化傳遞參數,權限控制,還需要到報表對話框中配置
在維護報表對話框,重新建立一個報表ID=GLCUCAR,設定報表類型為Reporting Services, 不需要添加參數,並且到功能授權中給與執行權限。
在Report Manager中執行,效果如下
在報表配置程序中,配置如下的報表浏覽網站
點擊連接,即可打開和預覽報表
1. 精度。不同的捨入方式和計算方式,會對結果精度有影響。
舉例:分組求和的結果可能和匯總求和的結果不同,而且數據量越多,誤差可能會越大。
而且在每筆紀錄計算時,都會發生數據精度損失。比如,100/1.22=81.9672131147541,一般是保留四位小數,再依次對這個值進行求和,結果就有些出入。
再距離,Math.Roud() 這個方法不是通常意義中的四捨五入,而是國際通用的算法。這會對值造成影響。
而SQL Server中Round的四捨五入也有些不同。
在數據庫中做summary和把值取到報表中做summary,結果上也有區別。
2. 所有的報表,日期格式要求一致
3. 制造大量的數據來測試報表的Performance.
如下圖,使用這個工具,來產生大量的數據.以ReportServer中的History表為例子
工具的原理是,讀取數據庫表的字段類型,生成一系列的數據放入到相應的列中。
數值型的列,可以用seed,自增的方式,或是rand隨機取值
字符型列,可以字符加數字的方式,不斷的產生不同的字符串。
當數據量增大時,報表的performance會明顯降低,這時,需要尋找一些優化的技巧。
4. 選擇條件的測試
如果是需要用戶輸入的值,最好能給出一個對話框,用以選擇值,減少值出錯或是無效的值的情況。
如果是時間,要控制取值范圍,依據業務數據的開始和結束時間為准。
5. 數據的排序要求。在分組的組別排序和明細數據的排序,規則要統一。
6. 字體字號,是否加黑,是否傾斜,都依照規范。
一般的規則是,報表標題14pt, 報表表頭12pt,明細數據10pt, 標題都加黑體。
7. 報表導出測試
導出的格式是否有不合理的地方,是否符合通用的紙張大小(A4),可以直接打印。
導出成PDF是否有亂碼,頁面的邊距是否合理。