Report Services 開發日誌(轉)

引自:http://www.cnblogs.com/wendy-lijie/archive/2009/05/27/1490806.html

對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引用
http://server/reportserver/reportservice.asmx
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 服務器的名稱、報表服務器虛擬目錄的名稱以及報表的完全限定名稱。(完全限定的名稱包含報表路徑,並以報表本身的
名稱結束。)
http://server/virtualroot?%5B/pathinfo%5D&prefix:param=value%5B&prefix:param=value%5D...n]
    常用前綴及其參數名:
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.報表中使用自定義嵌入式代碼
ReportingService 只接受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))

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章