顯示具有 Reporting Service 標籤的文章。 顯示所有文章
顯示具有 Reporting Service 標籤的文章。 顯示所有文章

2014年4月24日 星期四

如何透過程式的方式將ReportingService的報表匯出並指定格式

        最近接到客戶的需求,需要可以直接將Reporting Service 2012上的報表,透過程式的方式,直接以Excel匯出,相信有經驗的使用者都知道可以透過Reporting Service上的Web Service來進行,所以本篇我們來介紹一下如何來進行。

1、報表輸出資訊:
下列是我們希望匯出的報表資訊。

2、當開啟專案後,先加入第一個Web Service。

路徑請輸入:http://myreportserver/reportserver/reportservice2005.asmx
參考名稱請使用預設值


3、依序再加入第二個Web Service

路徑請輸入:http://myreportserver/reportserver/reportexecution2005.asmx
參考名稱:ReportExecutionService

4、接著再將下列的程式碼輸入即可,如果你要進行測試時,請修改下列的程式行。


  • 17行 ->  rs.Credentials = new System.Net.NetworkCredential("caryhsu", " p@ssword ", " microsoft "); 
    • 請依序輸入使用者名稱、密碼、DomainName
  • 20行 ->  string reportPath = "/ssrs_render_test";
    • 報表名稱
  • 26行 ->  string fileName = @"c:\share\ssrs_render_test.xls";
    • 輸出的位置
  • 33行 ->  rsExec.Credentials = new System.Net.NetworkCredential("caryhsu", "p@ssword", "microsoft");
    • 請依序輸入使用者名稱、密碼、DomainName
  • 41+42行 -> 報表參數
    •  parameters[0].Name = "PurchaseOrderID";  >> 報表參數 -> 欄位名稱
    •  parameters[0].Value = "2";  >> 報表參數 -> 欄位值                                                  


程式碼範例:
// Create object and set credential to RSservice
ReportExecutionService.ReportExecutionService rsExec = new ReportExecutionService.ReportExecutionService();
WebReference.ReportingService2005 rs = new WebReference.ReportingService2005();
rs.Credentials = new System.Net.NetworkCredential("caryhsu", "p@ssword", "microsoft");

// Render arguments
string reportPath = "/ssrs_render_test";     //path is from root(ReportServer)
string format = "EXCEL";                     //Export Format
string deviceInfo = null;
string extension;
string[] streamIDs;
ReportExecutionService.Warning[] warnings;
string fileName = @"c:\share\ssrs_render_test.xls";
string encoding;
string mimeType;

try
{
// Load the report.
rsExec.Credentials = new System.Net.NetworkCredential("caryhsu", "p@ssword", "microsoft");              
ReportExecutionService.ExecutionInfo info = rsExec.LoadReport(reportPath, null);
WebReference.ReportParameter[] rsparameters = rs.GetReportParameters(reportPath, null, false, null, null);

if (rsparameters.Length > 0)
{
ReportExecutionService.ParameterValue[] parameters = new ReportExecutionService.ParameterValue[1];
parameters[0] = new ReportExecutionService.ParameterValue();
parameters[0].Name = "PurchaseOrderID";
parameters[0].Value = "2";

rsExec.SetExecutionParameters(parameters, "en-us");
}


byte[] reportBytes = rsExec.Render(
format,
deviceInfo,
out extension,
out mimeType,
out encoding,
out warnings,
out streamIDs);

// Write report bytes to a file.
using (FileStream stream = File.OpenWrite(fileName))
stream.Write(reportBytes, 0, reportBytes.Length);
}
catch (SoapException e)
{
Console.WriteLine(e.Detail.OuterXml);
}      


參考連結:
Available Rendering Extensions (Reporting Services)
http://technet.microsoft.com/en-us/library/cc627537(v=sql.100).aspx
Render Method
http://technet.microsoft.com/en-us/library/aa258532(v=sql.80).aspx

關鍵字:Reporting Service、Render、ReportExecutionService

2013年5月7日 星期二

報表設計 - 查無資料時顯示特定文字與表頭資訊

        相信很多有設計報表的人都會遇到一件事,就是當此次的查詢條件查無資料時,在預設的情況下,並不會顯示任何的資訊,只會顯示標題而已,常有客戶困惑的問到,這樣到底是否有正常的執行,所以往往希望我們可以在沒有任何資料顯示的情況下,至少顯示 "查無資料" 等訊息。

        其實在2008之後,在Tablix上已有內建一個屬性,那就是NoRowsMessage(感謝Ray Yen大師的提點),只需在此屬性上設定後,即可顯示一段特定的文字,但問題來了,這樣的文字有點太過於簡單,而且重點是原本的表頭也不見了,所以客戶希望我們可以也同時秀出表頭的資訊。

        在以往的情況下,其實我們可以透過SQL語法的部份進行判斷,然後增加這個方式,但這個方法有點麻煩,而且每張報表都要這個功能時,都要再額外寫SQL進行處理,真是費時費工,還好貼心的Reporting Service也有一個方式可以作到,本篇我們就來介紹如何進行。

設定方式:
1、首先我們還是利用北風資料庫作了一張階層式的報表,然後透過屬性值來過濾資料。

2、接著請在此Tablix 1上的 NoRowsMessage 屬性中加入您想要顯示的值,比如說 "查無資料" 等,此時請再次進行查詢,然後您就可以看到顯示的情況。

3、請將原本的Tablix 1再複制一個複本出來,名稱暫訂為Tablix 2,然後放置在原本的Tablix 1的下方,如下圖。

4、請將原本的Tablix 1中的NoRowsMessage值清除,只保留下方Tablix 2中的值。
5、點選Tablix 2的Properties -> Visibility -> Show or hide based on an Expression

6、在運算式中輸入下方的語法,其中Fields!OrderID.Value就是你查詢的欄位名稱,輸入完成後再點選ok即可。

7、再次預覽,此時你就可以同時呈現表頭與特定文字。


參考連結:
Set a No Data Message for a Data Region (Report Builder and SSRS)
http://msdn.microsoft.com/zh-tw/library/dd220407.aspx


關鍵字:Reporting Service、NoRowsMessage、No Data Available

2012年10月18日 星期四

無法存取Report Manager與Report Server網址問題處理

今天接到一個很特別的情境,主要問題是無法開啟Report Manager與Report Server的網址,登入後會發生無法顯示網頁的錯誤,錯誤如下,由於這個問題非常的特殊,所以我問題處理過程與方法整理如下,提供大家參考。

系統環境:
Windows 2008 R2
SQL Server 2008 R2(10.50.2500)

事前跡象:
1、開啟Report Manager與Report Server的網址時會發生無法開啟網頁。
2、當重新產生URL時,Event Log會出現rsreportserver.config格式不正確的問題。
3、確認Reporting Service的log files,發現下列的問題。

library!ReportServer_0-1!1004!xx/xx/xxxx-xx:xx:xx:: e ERROR: Throwing Microsoft.ReportingServices.Diagnostics.Utilities.SecureConnectionRequiredException: , Microsoft.ReportingServices.Diagnostics.Utilities.SecureConnectionRequiredException: The operation you are attempting requires a secure connection (HTTPS).;

錯誤訊息:
Failed to unload app domain DefaultDomain. The following exception occurred: Error while unloading appdomain. (Exception from HRESULT: 0x80131015).

解決方法:
C:\Program Files\Microsoft SQL Server\MSRS10.50.MSSQLSERVER\Reporting Services\ReportServer\rsreportserver.config的檔案,發現SecureConnectionLevel的值為2,將值修改為0,構重啟服務之後,問題即解決。

問題說明:
上述的問題主要是因為客戶曾經啟用SSL協定,但是後來將SSL停用後,由於移除的方式問題,所以造成網站無法存取,而且當我存取網站的時候由於是以HTTP,但是錯誤訊息仍然顯示我是以HTTPS的方式進行,所以修改SecureConnectionLevel的設定值之後,問題即可解決。

參考網址:
SecureConnectionLevel Property (WMI MSReportServer_ConfigurationSetting)
http://msdn.microsoft.com/en-us/library/ms155384.aspx


關鍵字:SSRS、Reporting Service、0x80131015、SecureConnectionLevel

2012年10月2日 星期二

Reporting Service - 不分頁輸出

        在報表的分頁都是由Reporting Service自動判定並加以控制,當然也有接到許多使用者的需求針對分頁的部份進行討論,如匯出到Excel後的分頁討論等,而最近接到一個需求(有點特別),那就是由於報表的部份,需要只單純瀏覽,所以想停用報表中分頁的功能,其實此方式非常的簡單,你只需將報表中下列的值設定成0即可。

屬性位置:
Report -> InteractiveSize -> InteractiveHeight -> 0



參考連結:
控制報表分頁
http://msdn.microsoft.com/zh-tw/library/ms156282(v=sql.90).aspx

關鍵字:Report、InteractiveHeight、Page Break、Single Page、報表分頁

2012年9月1日 星期六

PowerView環境安裝與建置

        前面已介紹了相當多關於SharePoint與Reporting Service整合安裝的部份,也介紹了 SQL Server 2012中關於Reporting Service新功能的介紹,最後,我們就來介紹一下我個人覺得非常強大的一個功能,那就是PowerView。

         想起以前寫程式的時候,當時 RIA (Rich Internet Application) 的程式正流行,在一次的報表展示上,我秀出了使用RIA設計的報表,當下我的老闆非常喜歡我用RIA寫的報表,後來老闆也請我大量的使用RIA進行設計,為了寫這些相關的報表,可是花了不少的心力進行,但是如今 PowerView 的推出,真的讓我非常的高興,因為以往需要透過寫不少程式才可以達到的互動式報表,如今,透過PowerView,只需要像Excel般的操作,就可以輕鬆的達到以往的功能。

         本篇主要先介紹關於PowerView的前置作業,安裝前請先參考下面的三篇將SharePoint與Reporting Service的環境安裝完成,然後再參考 [ 如何在SharePoint上設計報表 ] 將Reporting Service的相關報表的相依性加入後,再透過本篇,你就可以輕鬆的在SharePoint上,設計PowerView了。


相關連結:

安裝流程:

1、安裝 PowerPivot For SharePoint

安裝流程上,我只截取有特別需要選擇的部份,其他的部份可以依照預設值即可。

1-1 請在SharePoint的機器上,再將SQL Server 2012的光碟片放入,然後選擇第一項 [新增 SQL Server 獨立安裝或將功能加入至現有安裝]

1-2 在 [安裝類型] 的部份,請選擇 [執行 SQL Server 2012 的新安裝]。

1-3 在 [安裝程式角色] 的部份,請選擇 [SQL Server PowerPivot for SharePoint]。

1-4 在 [執行個體組態] 的部份,請特別注意 [執行個體識別碼] 的部份名稱為 [POWERPIVOT] 這部份的名稱請千萬不要更改,請依照預設值即可。

1-5 在 [伺服器組態] 的部份,帳號密碼請使用 Domain Account。

1-6 安裝完成

2、設定 PowerPivot 組態

2-1 選擇 [PowerPivot 組態]

2-2 啟動後,選擇 [設定修復 PowerPivot for SharePoint]。

2-3 進入此畫面時,請確認再次輸入帳戶密碼的資訊,然後再點選 [執行] 即可。

2-4 執行完成後,你就可以看到執行後的狀況,點選 [結束]。

2-5 開啟SharePoint的管理中心,點選 [應用程式管理] -> [管理服務應用程式]。

2-6 點選 [新增] ,此時應該就可以看到新增的服務應用程式類型 [SQL Server PowerPivot Service Application],請點選此項目。

2-7 請輸入名稱的部份,而 [應用程式集區] 也請額外新增,所以請點選 [建立新的應用程式集區]。

2-8 預設值的部份,如果你可以將此項目前加入預設的Proxy群組,或後續的時候再加入也可。

2-9 建立 PowerPivot 服務應用程式完成。

3、確認並啟用 PowerPivot 的功能。

3-1 登入SharePoint的前端網站,然後點選 [網站動作] -> [網站設定]

3-2 點選 [網站集合管理] -> [網站集合功能]
3-3 確認 [網站集合的PowerPivot 功能整合] 是否有啟用。

4、建立PowerPivot圖庫。

在建立PowerView的部份有很多種的方式,你可以透過文件中的 [BI 語意模型連接] 或 [報表資料來源] 來新增,另外你也可以透過 PowerPivot 圖庫來完成,所以接下來我們就來進行[PowerPivot 圖庫]。

4-1 登入SharePoint的前端網頁,點選 [網站動作] -> [其他選項]

4-2 請先選擇 [篩選方式] -> [文件庫] -> [PowerPivot 圖庫],並請輸入圖庫的名稱。

4-3 建立完成後,你就可以在共享文件的下方看到此圖庫

4-4 此時我將官網提供的Excel範本上傳後,你就可以看到此系統即可呈現Excel中的細部資訊,當然你也可以點選其中右上角的第二個圖示,直接進行PowerView的設定模式。

4-5 PowerView的設計模式。


關於PowerView的範本,請至下列的網址進行下載,下一篇我們會再進行介紹如何進行PowerView的設計與使用,再請期待,謝謝。


PowerView範本下載:
SQL Server Samples Readme (en-US)
http://social.technet.microsoft.com/wiki/contents/articles/3735.sql-server-samples-readme-en-us.aspx#Readme_for_Power_View_Samples_RC0


參考連結:
安裝 PowerPivot for SharePoint
http://msdn.microsoft.com/zh-tw/library/ee210708
在管理中心建立及設定 PowerPivot 服務應用程式
http://msdn.microsoft.com/zh-tw/library/ee210685#ConfigApp

關鍵字:SharePoint、Reporting Service、PowerView、PowerPivot、RIA

2012年8月27日 星期一

Reporting Service新功能介紹 - Data Alerts


        SQL Server 2012的推出已有一段時間了,接下來我們就來介紹Reporting Service的部份,在本次的更新中,其實Reporitng Service主要大多在與SharePoint整合的部份,而其中有兩大主要的功能,一個是Data Alerts,另一個則是 Power View,而本次我們就來介紹一下 Data Alerts的部份。

相關連結:


Data Alerts功能主要就是你可以在報表內設定一個警示條件,當條件符合時,系統可以寄出信件通知使用者,這個功能常見的如證卷業,當基金本身的獲利高或低於某條件值時,就寄送Mail通知投資者,而這個功能,透過Data Alerts即可輕鬆的達成。


其實基本上Data Alerts與原本Reporting Service提供的報表訂閱非常的類似,但仍有些不同的地方,再請參考下方:

相同的部份:
  • 兩者皆透過SQL Server Agent進行排程進行處理。
  • 兩者都透過E-Mail進行寄送到收件者端。

不相同的部份:
  1. 報表訂閱可以傳送報表或連結給收件者,但是 Data Alerts只能傳送連結。
  2. 報表訂閱是在預定的時間會自動寄送,而Data Alerts只有在巡查的時間與設定的條件值都符合時,才會寄送給收件者。
  3. 報表訂閱的資訊會存放在 [ReportServer] 的資料庫中,而Data Alerts則會存放在 [ReportServer_Alerting]的資料庫中。

先行條件:請先參考 [如何在SharePoint上設計報表] 一文中的說明,先將報表設計好並且放置在SharePoint上。


設定方式:
1、確認 SharePoint - SMTP主機設定
1-1 登入SharePoint的管理中心後,點選 [系統設定] -> [電子郵件及簡訊 (SMS)] -> [設定外寄電子郵件設定]

1-2 請在 [外寄 SMTP 伺服器] 的欄位上,輸入您的主機位址。

2、確認 Reporting Service - SMTP主機設定
2-1 登入SharePoint的管理中心後,點選 [應用程式管理] -> [管理服務應用程式]

2-2 點選先前建立的Reporting Service應用程式後。

2-3 點選 [電子郵件設定]。

2-4 此時請再輸入Reporting Service應用程式的 [SMTP郵件伺服器]。

3、新增資料警示 (Data Alerts)
3-1 開啟任何已設計好的報表,或是參考前文 [如何在SharePoint上設計報表] 中設定的報表,然後點選 [動作] -> [新增資料警示]。

3-2 此時會提供您先行安裝 Sliverlight,請點選立即安裝。

3-3 開啟後視窗主要會分成兩個區塊,左邊屬於報表的部份,而右邊則是警示的設定區塊。

在這我們主要設定當使用者 [Davolio Nancy] 在 199801的總計金額小於68元時,就發出警示。

3-3-1 請在左邊警示名稱的部份輸入一個名稱。
3-3-2 第二個區塊主要設定條件的部份,ename設選擇 [Davolio Nancy]。
3-3-3 sum_mon請選擇 [小於] 數值請輸入 [68]。
3-3-4 yymm_order_date 請輸入 [198101]。
3-3-5 排程時間由於測式的原因,所以我設定成每1分鐘檢查一次。
3-3-6 請至少輸入一個收件者的Email,多個收件者時,可以用 "," 區隔開。
3-3-7 請點選儲存。

3-4 存檔完成後,在原設定的報表名稱上,您可以透過 [管理資料警示] 的選項進行設定。

3-5 進入資料警示 (Data Alerts) 的管理畫面後,你就可以看到目前的監空情況。

3-6 此時我到資料庫中,將 [Davolio Nancy] 的銷售記錄進行修改後,系統在排程時間到的時候,就會自動寄出E-Mail,內容如下。

此篇介紹的功能,個人覺得滿實用的,尤其是公司的高層主管對於某些數字特別需要監控時,都可以透過這個功能進行,所以就可以減少很多程式設計的時間,只需設定即可以達到要求。


參考連結:
Data Alerts
http://msdn.microsoft.com/en-us/library/gg492252.aspx

關鍵字:Reporting Service、SharePoint、Data Alerts

2012年8月2日 星期四

SharePoint與Reporting Service整合模式安裝與配置教學 - Part III

        經過前二篇的介紹,我們再來繼續進行Reporting Service的部份,本篇設定完成後,你就可以透過SharePoint進行報表的設計與整合,當然後續的一些新功能展示與介紹也會以這三篇為主,再請大家趕緊將環境建置完成。


相關連結:

環境設定:
1、安裝與啟用Reporting Service
1-1 請透過 [以系統管理員身份執行] 啟動 [SharePoint 2010 管理命令介面]

1-2 請依序輸入下列三行指令,前二行輸入後不會有任何的訊息,而第三行輸入後即會列出你已安裝的服務。
Install-SPRSService
Install-SPRSServiceProxy
get-spserviceinstance -all |where {$_.TypeName -like "SQL Server Reporting*"} | Start-SPServiceInstance


1-3 安裝完成後,確認是否已有啟動,請回到管理中心,點選 [系統設定] -> [管理伺服器上的服務]。

1-4 請確認 [SQL Server Reporting Service 服務] 是否已啟動,如果沒有請啟動,如果沒有看到此服務時,請確認1-3步驟執行上是否有誤。


2、新增SQL Server Reporting Service應用程式
2-1 回到管理中心,然後點選 [應用程式管理] -> [管理服務應用程式]。

2-2 此時我們需建立一個Reporting Service的應用程式,所以請接續點選 [新增] -> [SQL Server Reporting Services 服務應用程式]。

2-3 程式的名稱請自行輸入,由於建議最好與原本的應用程式集區進行區隔,所以請選擇 [建立新的應用程式集區],名稱同樣請自行輸入。

2-4 資料庫驗證的方式,建議可以選擇 [Windows 驗證],並且請勾選 [Web 應用程式關聯] 中的網站名稱。

2-5 Reporting Service 服務應用程式建立完成。


3、網站設定 - 啟用與整合Reporting Service
3-1 登入網站首頁(不是後端管理網站哦),選擇左上角的 [網站動作] -> [網站設定]。

3-2 點選 [網站集合管理] -> [網站集合功能]。

3-3 請確認 [Power View 整合功能] 已有啟動,如果沒有請啟動。

3-4 請確認 [報表伺服器整合功能] 是否已啟動,如果沒有請同樣啟動,如果您在此區看不到這二個功能的話,請檢查之前的步驟。


4、增加與設定Reporting Service文件集
4-1 點選 [共享文件] -> [文件庫] -> [文件庫設定]

4-2 點選 [一般設定] -> [進階設定]

4-3 由於我們需要自行變更文件的內容類型,所以請將 [是否允許內容類型的管理?] 更改為[是]。

4-4 再同樣進入 [共享文件] -> [文件庫] -> [文件庫設定],然後點選 [從現有的網站內容類型新增]。

4-5 內容類型請選擇 [SQL Server Reproting Services 內容類型] -> 然後將看到的三個類型全部新增,然後選確定。

4-6 然後到 [共享文件] -> [文件] -> [新增文件],你就可以看到剛剛新增的報表文件,

透過本次三篇文章可以讓你將SharePoint與Reporting Service進行整合,後續我將儘快介紹SQL Server 2012中關於Reporting Service的新功能,再請大家繼續支持。


參考連結:
Install Reporting Services SharePoint Mode as a Single Server Farm
http://msdn.microsoft.com/en-us/library/gg492276.aspx 

相關連結:

關鍵字:SQL Server、Reporting Service、SharePoint