在 ReportViewer 报表中使用表达式
有些表達式在報表中很常用。其中包括更改報表中的數(shù)據(jù)外觀的表達式、計算總數(shù)的表達式和更改報表項屬性的表達式。本主題介紹了報表中可用于常見任務的一些表達式。
報表中的許多表達式都包含函數(shù)。您可以編寫使用 Microsoft.VisualBasic、System.Convert 和 System.Math 命名空間中的函數(shù)的表達式,或將引用添加到其他程序集或自定義代碼中。還可以使用 Microsoft .NET Framework 中的類。有關詳細信息,請參閱 .NET Framework SDK 類庫文檔。
函數(shù)
報表中的大部分函數(shù)為 Microsoft Visual Basic 函數(shù)或者內(nèi)置報表函數(shù)??梢允褂眠@些函數(shù)來設置數(shù)據(jù)格式、應用邏輯和訪問報表元數(shù)據(jù)。
Visual Basic 函數(shù)
可以使用 Visual Basic 函數(shù)來操作文本框中所顯示的數(shù)據(jù),或者操作參數(shù)、屬性或報表其他區(qū)域中所用的數(shù)據(jù)。本節(jié)舉例說明了其中一些函數(shù)。有關 Visual Basic 函數(shù)的詳細信息,請參閱 Visual Basic 文檔。
日期函數(shù)
可以使用 Visual Basic 函數(shù)在報表中提供日期信息。
-
以下表達式包含 Today 函數(shù),用于提供當前日期。此表達式可用在文本框中以在報表上顯示日期,或用在參數(shù)中以根據(jù)當前日期篩選數(shù)據(jù):
復制代碼 =Today() -
如果要根據(jù)單個參數(shù)來提供日期范圍,則可使用 DateAdd 函數(shù)。以下表達式提供了 StartDate 參數(shù)中的日期之后六個月的日期:
復制代碼 =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value) -
以下表達式包含了 Year 函數(shù),用于顯示特定日期所屬的年份。可以使用此表達式將日期組合在一起,或者將年份作為一組日期的標簽顯示。此表達式為給定順序的一組日期提供年份:
復制代碼 =Year(Fields!OrderDate.Value) -
Month 函數(shù)和其他函數(shù)也可用于處理日期。有關詳細信息,請參閱 Visual Basic 文檔。
字符串函數(shù)
可以使用 Visual Basic 函數(shù)操作報表中的字符串。
-
可以使用 Format 函數(shù)來設置字符串中的日期和數(shù)字的格式。 The following expression displays values of the StartDate and EndDate parameters in long date format:
復制代碼 =Format(Parameters!StartDate.Value, "D") & " through " & Format(Parameters!EndDate.Value, "D")如果文本框只包含日期或數(shù)字,則應當使用文本框的 Format 屬性(而不是文本框中的 Format 函數(shù))來應用格式。
-
Right、Len 和 InStr 函數(shù)用于返回子字符串,例如,修整 DOMAIN\username 以只返回用戶名。 The following expression returns a portion of a string to the right of a backslash (\) character from a parameter named User:
復制代碼 =Right(Parameters!User.Value, Len(Parameters!User.Value) - InStr(Parameters!User.Value, "\"))The following expression results in the same value as the previous one, using members of the .NET Framework String class instead of Visual Basic functions:
復制代碼 =Parameters!User.Value.Substring(Parameters!User.Value.IndexOf("\")+1, Parameters!User.Value.Length-Parameters!User.Value.IndexOf("\")-1)
決策函數(shù)
可以使用 Visual Basic 函數(shù)來計算輸入值并根據(jù)結果返回另一個值。
-
Iif 函數(shù)根據(jù)表達式的計算結果是否為 True 返回兩個值中的一個。以下表達式使用了 Iif 函數(shù),如果 LineTotal 的值超過 100,則返回布爾值 True,否則返回 False:
復制代碼 =Iif(Fields!LineTotal.Value > 100, True, False)以下表達式使用了多個 Iif 函數(shù)(也稱為“嵌套 Iif 函數(shù)”),根據(jù) PctComplete 的值返回三個值中的一個。
復制代碼 =Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red")) -
以下表達式也是根據(jù) PctComplete 的值返回三個值中的一個,不過使用的是 Switch 函數(shù),該函數(shù)返回的是多個表達式中計算結果為 True 的第一個表達式的值:
復制代碼 =Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
報表函數(shù)
Reporting Services 提供了可用于操作報表中的數(shù)據(jù)的其他報表函數(shù)。本節(jié)舉例說明了其中兩個函數(shù)。有關報表函數(shù)和示例的詳細信息,請參閱 ReportViewer 報表的內(nèi)置函數(shù)。
-
Sum 函數(shù)可計算某一分組或數(shù)據(jù)區(qū)域中多個值的和。此函數(shù)可用于表格組的頁眉或頁腳中。以下表達式顯示了訂單分組或數(shù)據(jù)區(qū)域中數(shù)據(jù)的和:
復制代碼 =Sum(Fields!LineTotal.Value, "Order") -
如果將包含 RowNumber 函數(shù)的表達式用于數(shù)據(jù)區(qū)域中的文本框中,則該表達式將顯示表達式所在文本框的每個實例的行號。此函數(shù)可用于給表格中的各行加編號。還可以將其用于更復雜的情況,例如,根據(jù)行號提供分頁符。有關詳細信息,請參閱本主題中后面的“分頁符”。
以下表達式顯示了從最外面數(shù)據(jù)區(qū)域的第一行到最后一行的行號。Nothing 關鍵字表示函數(shù)將從最外面數(shù)據(jù)區(qū)域的第一行開始計數(shù)。若要從子數(shù)據(jù)區(qū)域開始計數(shù),可使用數(shù)據(jù)區(qū)域的名稱。
復制代碼 =RowNumber(Nothing)
報表數(shù)據(jù)的外觀
可以使用表達式來控制數(shù)據(jù)在報表上的顯示形式。例如,可以在一個文本框中顯示兩個字段的值、顯示報表的有關信息或影響報表中分頁符的插入方式。
頁眉和頁腳
在設計報表時,可能需要在報表的頁腳顯示報表名稱和頁碼。為此,可使用以下表達式:
-
以下表達式提供了報表的名稱以及它的運行時間??梢詫⒃摫磉_式放入報表頁腳或表體的文本框中。 The time is formatted with the .NET Framework formatting string for short date:
復制代碼 =Globals.ReportName & ", dated " & Format(Globals.ExecutionTime, "d") -
以下表達式位于報表頁腳的文本框中,提供了報表的頁碼和全部頁。
復制代碼 =Globals.PageNumber & " of " & Globals.TotalPages
也可以在報表頁眉或頁腳中引用表體中的報表項。以下示例說明了如何在頁眉中顯示頁面中的第一個值和最后一個值,類似于目錄列表的形式。該示例假定存在一個包含名為 LastName 的文本框的數(shù)據(jù)區(qū)域。
-
以下表達式位于頁眉左側的文本框中,提供了頁面上 LastName 文本框的第一個值:
復制代碼 =First(ReportItems!LastName.Value) -
The following expression, placed in a textbox on the right side of the page header, provides the last value of the LastName text box on the page:
復制代碼 =Last(ReportItems!LastName.Value)
可以對頁眉或頁腳中所引用的報表項應用聚合函數(shù)。(不過,不能對表體中所引用的報表項應用聚合函數(shù)。)以下示例說明了如何顯示頁總頁數(shù)。該示例假定存在一個包含名為 Cost 的文本框的數(shù)據(jù)區(qū)域。
-
以下表達式位于頁眉或頁腳中,提供了頁面上的 Cost 文本框中的值的和:
復制代碼 =Sum(ReportItems!Cost.Value)注意 頁眉或頁腳中的每個表達式只能引用一個報表項。
分頁符
在某些報表中,可能需要在指定行數(shù)之后、組或報表項上放置分頁符。為此,在數(shù)據(jù)區(qū)域中創(chuàng)建組(通常是緊挨著詳細信息區(qū)域的組),在組中添加分頁符,然后根據(jù)指定行數(shù)在組中添加組表達式。
-
如果將以下表達式放置在組表達式中,則它將給每 25 行指定一個編號。如果為組定義了分頁符,將導致每隔 25 行插入一個分頁符。
復制代碼 =Int((RowNumber(Nothing)-1)/25)
屬性
表達式不僅用于顯示文本框中的數(shù)據(jù)。還可以用于更改將屬性應用于報表項的方式??梢愿膱蟊眄椀臉邮叫畔?#xff0c;或更改其可見性。
格式
可以使用表達式改變報表中報表項的外觀。
-
如果在文本框的 Color 屬性中使用以下表達式,則它可根據(jù) Profit 字段的值更改文本的顏色:
復制代碼 =Iif(Fields!Profit.Value < 0, "Red", "Black") -
如果在數(shù)據(jù)區(qū)域中的報表項的 BackgroundColor 屬性中使用以下表達式,則它可更改淡綠色與白色之間的每一行的背景顏色:
復制代碼 =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
可見性
可以使用報表項的可見性屬性來顯示和隱藏報表中的項。在諸如表的數(shù)據(jù)區(qū)域中,最初可以根據(jù)表達式中的值隱藏詳細信息行。
-
The following expression, when used for initial visibility of detail rows in a group, shows the detail rows for all sales exceeding 90 percent in the PctQuota field:
復制代碼 =Iif(Fields!PctQuota.Value>.9, False, True)
報表參數(shù)
可以在參數(shù)中使用表達式來更改參數(shù)的默認值。例如,可以使用參數(shù),以根據(jù)用于運行報表的用戶 ID 篩選特定用戶的數(shù)據(jù)。
-
如果將以下表達式用作參數(shù)的默認值,則它可收集運行報表的用戶的用戶 ID:
復制代碼 =User!UserID
自定義代碼
可以在報表中使用自定義代碼。自定義代碼既可以嵌入報表中,也可以存儲在報表所使用的自定義程序集中。有關自定義代碼的詳細信息,請參閱向 ReportViewer 報表中添加自定義代碼。
-
以下示例調用了 ToUSD 嵌入代碼方法,該方法將 StandardCost 字段值轉換為美元值:
復制代碼 =Code.ToUSD(Fields!StandardCost.Value)本文轉自94cool博客園博客,原文鏈接:http://www.cnblogs.com/94cool/p/4283809.html,如需轉載請自行聯(lián)系原作者
總結
以上是生活随笔為你收集整理的在 ReportViewer 报表中使用表达式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 知识总结
- 下一篇: Struts2学习(四):Action执