Reporting Service 中的函式使用
1、 對Table中的詳細內容,以不同的顏色間隔開相鄰的兩行。
A:選擇Table的Detail行,選擇屬性中的BackgroundColor,值選擇表示式,輸入:=iif(RowNumber(Nothing) Mod 2, "White", "Beige")。
2、設定每面顯示Table表頭或表尾
A:選擇Table Header或Table Footer,將屬性中的RepeatOnNewpage設為True.
3、在每頁都顯示放入的圖片或標題頭等資訊。
A:只須在Table Header中加行數,把你要顯示的內容放到單元格中,然後再按第二條方式設定後就可以了。
1. 分頁的控制方式
1.1. Reporting Services自動分頁
在報表的頁首或者頁尾新增文字框,呼叫全域性變數=Globals!PageNumber
1.2. 根據記錄條數來分頁
當每條記錄呈現的高度不一致,我們又希望讓每頁呈現的記錄條數一致,那麼我們可以通過記錄條數來分頁。在通過記錄條數分頁時,通常是
根據記錄條數來分組,然後在組的結束位置新增分頁符。
在表、矩陣或者列表中新增一個組,然後在分組表示式中輸入=(RowNumber("ContainerName") - 1) / PageSize ( PageSize 用每頁所包含的
記錄條數替代,ContainerName用包含這個組的表、矩陣或者列表的名稱替代)。這個表示式是用記錄的行號整除分頁大小,也就是記錄所在的
頁碼數。最後選中“在結尾處分頁”,在每個組例項的結尾處放置分頁符。
1.3. 按組分頁
插入組時,在<常規>的頁籤中,可以選擇<在起始處分頁>或者<在結尾處分頁>
2. 獲取引數列表的方法
ReportingService rService = new ReportingService();//建立報表服務例項
rService.Credentials = System.Net.CredentialCache.DefaultCredentials;//設定預設系統憑據
string historyID = null;
bool forRendering = true;
ParameterValue[] values = null;
DataSourceCredentials[] credentials = null;
ReportParameter[] parameters;
parameters = rService.GetReportParameters//獲取報表引數集合
(
"/cfhrreport/pos",
historyID,
forRendering,
values,
credentials
);
ListItem item;
foreach(ValidValue v in parameters[0].ValidValues)//遍歷引數的有效值集合
{
item=new ListItem(v.Label ,v.Value );
this.DropDownList1 .Items .Add (item);//填充到一個下拉框
}
3. Reporting Services API
首先新增web引用
ReportingService rService = new ReportingService();//建立報表服務例項
rService.Credentials = System.Net.CredentialCache.DefaultCredentials;//預設系統憑據
CatalogItem[] catalogItems;
catalogItems = rService.ListChildren("/", true);//對根路徑檢索
foreach(CatalogItem item in catalogItems)
{
if(item.Type ==ItemTypeEnum.Folder)
{
//遍歷報表資料夾
}
}
foreach(CatalogItem item in catalogItems)
{
if(item.Type ==ItemTypeEnum.Report)
{
//遍歷報表
}
}
//搜尋報表
ReportService.SearchCondition[] condition=new SearchCondition[1];
condition[0]=new SearchCondition();
condition[0].Name ="Name";
condition[0].Value =this.TextBox1.Text ;
catalogItems=rs.FindItems ("/",WebReportSample.ReportService .BooleanOperatorEnum .And ,condition);
//釋出報表
byte[] reportData;
System.IO .FileStream fs=System.IO .File.OpenRead ("c://Report1.rdl");
reportData=new byte [fs.Length ];
fs.Read (reportData,0,fs.Length );
rs.CreateReport ("New Report","/",false,reportData,null);
//刪除報表
rs.DeleteItem ("報表名稱");
4. 報表Url分析
報表 URL 包含 Web 伺服器的名稱、報表伺服器虛擬目錄的名稱以及報表的完全限定名稱。(完全限定的名稱包含報表路徑,並以報表本身的
名稱結束。)
常用字首及其引數名:
4.1. rc:toolbar=true/false 顯示/不顯示工具欄
4.2. rs:command=render 呈現報表
4.3. rs:format=PDF(DOC,XLS)匯出報表格式
4.4. rc:parameters=true/false 顯示/不顯示工具欄的引數選擇區域
4.5. @Parameter=value 直接傳遞引數值
注意:在URL引數中如果有中文,將不能被正確識別,解決的方法是用HttpUtility.UrlEncode將其轉換為uft-8,再附加到引數中即可。此外還
要注意引數是大小寫敏感的。
5. ASP.NET中展現報表
ASP.NET提供了多種技術來呈現Web形式的報表,通常的解決方法是用Iframe。將我們前面所掌握的URL賦值給Iframe的src,結合Javascritp腳
本,我們便可以將報表整合在頁面中。此外,我們還可以充分利用ASP.NET強大的控制元件功能,如日曆控制元件、影象按鈕等功能提高系統的易用性。
小技巧:有時報表中的圖片可能會顯示不出來,這可能是Cookies的設定問題,你也可以通過讓客戶下載reg檔案,把Reporting Services服務
器加入本地計算機的信任站點中。此外,報表中的image有embed和external兩種方式,建議使用external方式,這樣可以有效地縮小報表的尺
寸。
6.報表中使用自定義嵌入式程式碼
Reporting Service 只接受Microsoft Visual Basic .NET 中編寫嵌入式程式碼, 程式碼準備好,您就可以使用全域性定義的 Code 成員在報表表達
式中呼叫它。例如,如果您編寫了一個名為 GetValue 的嵌入式程式碼函式,就可以使用下列語法從您的表示式中呼叫它:
6.1.在報表<屬性>中,選擇<程式碼>頁籤,輸入自定義程式碼
Function GetValue(value As Object) As Object
if Value is Nothing then
return 0
else
return value
end if
End Function
6.2.呼叫方法:
=Code.GetValue(Code.GetValue(Fields!欄位名.Value))