1. 程式人生 > >Reporting Service 中的函式使用

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))