顯示具有 SSRS 標籤的文章。 顯示所有文章
顯示具有 SSRS 標籤的文章。 顯示所有文章

2011年8月2日 星期二

如何在Matrix上的小計取得百分比(How To Get Percentage Over Subtotal in Matrix)。

我在網路上看到這個問題
要在Matrix小計上顯示百分比的話要使用Reportitems
1.先在DATASET上準備好資料
2.在Matrix上面的某一個TEXTBOX上算好總和。
3.隱藏該欄位。
4.在要顯示百分比的欄位的運算式打上類似下圖的語法:
=Iif(reportitems!txtEnvironmentSubTotal.Value is nothing, nothing, Format(SUM(Fields!COUNTS.Value)/reportitems!txtEnvironmentSubTotal.Value, "0.0%"))
5.預覽結果
搞定收工。

2011年7月8日 星期五

報表組件(Report Parts)的介紹

問題:我已經建立了一張財務的RDL報表,有一天,天兵阿圜說她想要做一張銷售報表,而她的報表一部分的TABLIX跟我的財務報表的TABLIX是一樣的,那麼我跟如何SHARE 我的TABLIX給她呢?

解決:使用Report Parts可以解決這個問題

1.在原有的報表點選報表(R)後,在點選發行報表組件
2.選擇要分享的報表組件
3.設定報表組件要部署的報表伺服器與目錄
4.部署後可以看到報表組件的目錄
5.點入報表組件的目錄後可以看到要分享的內容
6.點選報表產生器(Report Builder)
7.進入報表產生器(Report Builder)後可以看到報表組件

8.把報表組件拉入編輯頁面

9.預覽報表內容

結論:
報表組件可以重複的使用,透過報表組件的分享可以加速報表的開發,提升報表開發的效率。

登入報表管理員(Report Manager)時不斷被詢問帳號密碼

問題:
當我進入報表管理員時網頁瀏覽器(IE)會要求我輸入報表管理員的登入帳號和密碼,
當我輸入administrator的帳號和密碼之後還是不斷詢問我帳號和密碼。

解決方法:後來發現是IE安全性設定的問題

1.打開IE選擇工具(T)==>網際網路選項(O):

2.接著點選安全性後,選擇近端內部網路,並點選網站(S):

3.點選進階(A)

4.把本機的網址加入網站(W)中,如此就可以順利登入報表管理員了。

2011年7月7日 星期四

Reporting Service 2008R2 LookupSet的使用

繼上一篇的LookupMuliLookUp後,現在要介紹Lookup家族的最後一個成員LookupSet。
我們有兩個Table分別為DimCity與SubCity:
DimCity與SubCity這兩個Table的關係是一對多。
接著我們在設計畫面建立一個table,並且加入DimCity的CityID與CityName到Tablix,接著在另一個Tablix輸入運算式:
我們看到LookupSet的第一個參數為DimCity的Fields!CityID.Value,而第二個參數為SubCity,第三個參數為顯示名稱,最後則是另一個DataSet(資料集)的名稱。
在LookupSet後因為資料是1對多的關係,所以顯示報表會有error,這時候我們使用Join把產生分解後,並且加上,這個符號,最後就可以觀看資料的結果:

Naming Excel Worksheets

問題:在Reporting Service 2008 R2之前我們要把rdl匯出成Excel檔案時常常為Excel的sheet命名而苦惱。

解決方法: 在Reporting Service 2008 R2可以設定屬性PageName達成匯出excel時命名sheet。

我們把PageName設定為想要命名的欄位名稱。
接著將rdl報表匯出成excel,這時候我們就可以看到Excel的sheet是以PageName的值(城市)來命名。

2011年7月6日 星期三

Reporting Service 2008R2 MultiLookup的使用。

繼上一篇LOOKUP的使用之後,這篇是講MultiLookup的用法,MultiLookup與Lookup的使用方法很像,差別在於第一個使用的參數Lookup是單一值而MultiLookup第一個使用的參數可以是多值的。
我們有兩個Table分別為DimSubCity與SubCity:

我們看到DimSubCity的SubCityID是多值的,這時候MultiLookup就派上用場了
我們看第一個參數使用Split切開後再與 SubCity的Fields!SubCityID.Value在關聯,第三個與第四個參數分別為顯示名稱與要結合的DataSet,完成後Table內容如下:
預覽報表內容:
原本的1,2,3已經可以使用SubCityName來顯示資料內容了。
接著下一篇我將會講解LookupSet的使用方法。

Reporting Service2008 R2 Lookup Function 的使用

我們在做報表的時候通常會遇到一個問題,報表的Table物件只能使用一個DataSet,在Reporting Service 2008 R2新增的Function(Lookup、MultiLookup與LookupSet),可以讓我們在Table物件使用兩個DataSet。
首先看一下兩個DataSet的資料結構:
我們有FactSaleTable與DimCity兩個TABLE,這兩個TABLE是以CityID做關聯。
接下來我們拖拉一個TABLE物件,並且拉入FactSaleTable的CityID與SaleAmount兩個欄位至TABLE物件,這時候TABLE的DataSet為FactSaleTable。
接著我們在城市代號與欄位金額中間增加一個空白欄位,並在該欄位的運算式打上
在Lookup這個FUNCTION,其中第一個Fields!CityID.Value為原來的FactSaleTable的 CityID,第二個Fields!CityID.Value為DimCity的CityID,它會與第一個的 Fields!CityID.Value做比對(Mapping),第三個Fields!CityIDName.Value為顯示的欄位內容,而"DimCity"就是第二個DataSet。

完成後TABLE如下

預覽內容
我們看到中間的程式名稱的是DimCity DataSet的內容,而城市代號與銷售金額是FactSaleTable DataSet的內容,這表示同一個Table可以一次使用兩個DataSet。
下一篇我將講解如何使用MultiLookup。

2011年7月4日 星期一

2011年7月3日 星期日

Reporting Service的群組分頁之二:如何設定群組頁數與總頁數之頁碼

在Reporting Service 2005,設定群組分頁時常常遇到頁碼不會依群組計算,而是以全部的頁數來計算。譬如說:你的報表總共有八頁,分二個群組,一個群組五頁,一個三頁,但是Reporting Service 2005出來頁碼就是八頁,1/8,2/8,不會依個群組分頁碼,第一個是1/5到5/5,第二個群組是1/3到3/3,如果要做到這種效果,有額外寫code,昨天我在某個老外的bi blog看到在Reporting Service 2008 R2有群組分頁頁碼的設定,阿~真是好物一枚。
這是我做的報表範例
頁尾有兩個textbox,運算式分別為:
Globals!PageNumber/Globals!TotalPages與Globals!OverallPageNumber/Globals!OverallTotalPages
這時候瀏覽報表內容:
發現Globals!PageNumber/Globals!TotalPages與Globals!OverallPageNumber/Globals!OverallTotalPages是一模一樣的,這是因為我們頁碼的設定ResetPageNumber的屬性為flase的緣故。
ResetPageNumber屬性設為true頁碼就可以依群組而變動了。
瀏覽結果如下圖
展開看詳細資料內容
阿~真是棒,微軟好像有聽到我們工程師的心聲,這次給他一個讚!^^
搞定收工~~

2011年7月2日 星期六

如何解決SSRS 2008 R2凍結表頭的問題

今天有個可愛的學妹問我這個問題,學妹都開口了身為學長不幫忙好像說不過去。
其實凍結表頭這個問題真正的問題點反而不是在凍結表頭的設定,而是設定凍結表頭後,凍結的表頭會跟資料重疊在一起,讓人看不清楚表頭內容。
身為學長的我怎麼不可以多照顧一下學妹呢?哈哈,廢話不多說,趕快給他做下去。
首先是設定凍結表頭,如何設定凍結表頭呢?這個問題你知我知就連獨眼龍也知。
首先在資料行群組點選進階模式
然後在資料列群組上面的FixedData屬性選True
接著預覽報表內容,發現表頭和資料內容混在一起,這樣表頭內容看的不是很清楚。
怎麼辦呢?很簡單,只要把表頭的背景顏色用深色系的顏色,而表頭文字用白色,這樣表頭就可以把資料內容蓋住,而白色字體在深色系下很顯眼,一眼就可以看得很清楚。
預覽結果如下:
你看看,當移動拖拉BAR時,深色的凍結表頭是不是蓋住資料內容,這樣就不會有表頭內容和資料內容混在一起的困擾。

其實我覺得做報表可以多用一些顏色、字體或字型的小技巧來達到的某些視覺上的效果,重點是使用者一目瞭然,有時候這些小技巧可能替代原本需要做很多的設定或甚至於報表工具設定做不到的效果,我覺得這是很多人包含我本人會忽略的一些小細節。
兩點半了,該去看電影了,收工。

2011年6月22日 星期三

SSRS錯誤訊息:嘗試連接到報表伺服器失敗。請檢查您的連接資訊以及報表伺服器是否為相容版本

解決方法為在C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportManager的目錄下打開檔案RSWebApplication.config,並且在ReportServerUrl下的Tag輸入
http://MyServer/ReportServer即可。
PS:RSWebApplication.config的路徑會因安裝的位置而異。

SSRS錯誤訊息:The ReportServerVirtualDirectory element is missing

解決方法為在C:\Program Files\Microsoft SQL Server\MSSQL.3\Reporting Services\ReportManager目錄RSWebApplication.config檔案,在ReportServerVirtualDirectory的tag打上ReportServer即可。
PS:RSWebApplication.config的路徑會因安裝的位置而異。

Tablix的特性:具有階層的資料列

通常我們在做群組階層時,每一個欄位都要有一個資料行,而ssrs 2008可以在一個資料行顯示欄位的群組階層,如下圖所示:
 首先先增加一個群組。
然後該群組底下增加子群組
在子群組底下再建立一個子群組,最後設計頁面如下:
瀏覽報表
發現年度、城市與行政區每個階層都有一個欄位,這樣子很佔報表的空間。
現在要改善這三個欄位的,把三個階層都放置在一個欄位上。
我們在最底層的群組加入總計,如圖所示:

接著在行政區上面的的資料格加入城市的欄位,並且刪除前面城市的資料行。
接著對對中間的群組重複做一次加入總計並刪除前方資料行的動作,並且在每一個資料欄位設定Padding的Left屬性,Group1為2pt、Group2為12pt、Group3為22pt完成後的設計畫面如下:

這樣具有階層的資料欄位就完成了,預覽報表內容並比較改善前後的差異:
改善前
改善後
我們發現改善後的報表比較美觀。
結論:善用Tablix 具有階層的資料列可以節省報表空間並可以進一步的美化報表。