2015年8月6日 星期四

[SSRS] 報表伺服器專案-建立初階報表

 Reporting Service   Visual Stduio  


背景

之前在工作上一直使用Smart Query作為報表開發的工具,這次終於有機會以Reporting Service來開發了!
It's never too late to learn!
在此紀錄一下SSRS的入門開發過程。

環境

l   Windows 7 Enterprise
l   Visual Studio 2013 update 5
l   Sql Server 2012

注意在Visual Studio上開發SSRS必須安裝第四點的SQL Server Data Tools - BI

步驟

建立報表伺服器專案(Reporting Services)

選擇「Reporting Services」的報表伺服器專案
 


建立後,在專案下會看到如下的結構:



其實很直覺的開發流程就是建立「資料來源(DataSource)→建立「資料集(DataSet)→建立「報表」。
而且在【報表】這個資料夾下,可以在建立報表時,立即建立專屬的DataSourceDataSet 或是指定使用已建立在「共用資料來源」、「共用資料集」的資訊。



DataSource





以精靈建立簡易的報表



進入【加入新的報表】精靈後,直接選取剛才建立的共用資料來源。


在「設計查詢」加入Sql




在最後一個步驟,輸入報表名稱並選擇預覽。



結果:


建立進階報表

假設我們以呼叫Stored Procedure,且須提供參數當作查詢條件;

改以【加入】【新增項目】加入一個新的報表。




報表資料手動加入DataSource:右鍵點選【資料來源】【加入資料來源


直接選擇共用的資料來源。



建立新的DataSet:右鍵點選【資料集】【加入資料集



在「查詢」頁籤,設定要使用哪個DataSourceSql查詢或Stored Procedure (後文簡稱SP)


備註: 此範例測試的SP如下
CREATE PROCEDURE [dbo].[sp_jb_test]
    @QueryName  NVARCHAR(50)
AS

SELECT * FROM
(
SELECT 'JB' AS NAME, 'karatejb@blogspot.com' as Blog, '0933-XXX-XXX' as TelPhoneNumber
UNION SELECT 'Lily' AS NAME, 'karatejb@blogspot.com' as Blog, '0910-XXX-XXX' as TelPhoneNumber
UNION SELECT 'Leia' AS NAME, 'karatejb@blogspot.com' as Blog, '0921-XXX-XXX' as TelPhoneNumber
) x
WHERE NAME LIKE '%'+@QueryName+'%'

GO



在「參數」頁籤,可以看到SP的參數,在後面輸入 “[@參數名稱]”,表示這個參數的值是從報表的操作介面讀入使用者輸入的參數值。




建立DataSet後,接下來只要設計報表就可以了。



l   格式及字體: 自己調 XD
l   下方的明細只要從剛才建立的DataSet中,直接拖曳欄位過去即可。


l   查詢名字:
在右鍵運算式中,選擇參數中的QueryName (使用者輸入的查詢條件)




l   列印日期:
直接使用內建的函式,取得目前的系統日期和時間。


l   查詢者:


建置後,可按下【預覽】來執行SSRS囉!




以其他DataSet的查詢結果作為報表的輸出欄位值

在報表會有一些固定欄位值要輸出,例如上例的列印日期和查詢者,
當然SSRS內建的運算式在一般情況下已經夠用了,但是如果是特別的值,如果可以用Sql語法查詢是不是比較方便呢? 這時候我們就可以用新增另一個DataSet的方式來達到這個目的。

以列印日期為例,我們改以從Sql Server查詢回來地系統的日期時間作為其輸出值。

報表資料加入第二個DataSet 如下




報表 - 列印日期的運算式改為以DataSet2的結果為主。
PS. 在非明細的輸出欄位,必須做彙總資料! 否則會出現錯誤,在這邊SSRS已經幫我們加上First()以查詢結果第一個值作為輸出。


預覽結果




Reference





沒有留言:

張貼留言