在 ReportViewer 报表中使用表达式
有些表達式在報表中很常用。其中包括更改報表中的數據外觀的表達式、計算總數的表達式和更改報表項屬性的表達式。本主題介紹了報表中可用于常見任務的一些表達式。
報表中的許多表達式都包含函數。您可以編寫使用 Microsoft.VisualBasic、System.Convert 和 System.Math 命名空間中的函數的表達式,或將引用添加到其他程序集或自定義代碼中。還可以使用 Microsoft .NET Framework 中的類。有關詳細信息,請參閱 .NET Framework SDK 類庫文檔。
函數
報表中的大部分函數為 Microsoft Visual Basic 函數或者內置報表函數??梢允褂眠@些函數來設置數據格式、應用邏輯和訪問報表元數據。
Visual Basic 函數
可以使用 Visual Basic 函數來操作文本框中所顯示的數據,或者操作參數、屬性或報表其他區域中所用的數據。本節舉例說明了其中一些函數。有關 Visual Basic 函數的詳細信息,請參閱 Visual Basic 文檔。
日期函數
可以使用 Visual Basic 函數在報表中提供日期信息。
-
以下表達式包含 Today 函數,用于提供當前日期。此表達式可用在文本框中以在報表上顯示日期,或用在參數中以根據當前日期篩選數據:
復制代碼 =Today() -
如果要根據單個參數來提供日期范圍,則可使用 DateAdd 函數。以下表達式提供了 StartDate 參數中的日期之后六個月的日期:
復制代碼 =DateAdd(DateInterval.Month, 6, Parameters!StartDate.Value) -
以下表達式包含了 Year 函數,用于顯示特定日期所屬的年份。可以使用此表達式將日期組合在一起,或者將年份作為一組日期的標簽顯示。此表達式為給定順序的一組日期提供年份:
復制代碼 =Year(Fields!OrderDate.Value) -
Month 函數和其他函數也可用于處理日期。有關詳細信息,請參閱 Visual Basic 文檔。
字符串函數
可以使用 Visual Basic 函數操作報表中的字符串。
-
可以使用 Format 函數來設置字符串中的日期和數字的格式。 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")如果文本框只包含日期或數字,則應當使用文本框的 Format 屬性(而不是文本框中的 Format 函數)來應用格式。
-
Right、Len 和 InStr 函數用于返回子字符串,例如,修整 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)
決策函數
可以使用 Visual Basic 函數來計算輸入值并根據結果返回另一個值。
-
Iif 函數根據表達式的計算結果是否為 True 返回兩個值中的一個。以下表達式使用了 Iif 函數,如果 LineTotal 的值超過 100,則返回布爾值 True,否則返回 False:
復制代碼 =Iif(Fields!LineTotal.Value > 100, True, False)以下表達式使用了多個 Iif 函數(也稱為“嵌套 Iif 函數”),根據 PctComplete 的值返回三個值中的一個。
復制代碼 =Iif(Fields!PctComplete.Value >= .8, "Green", Iif(Fields!PctComplete.Value >= .5, "Amber", "Red")) -
以下表達式也是根據 PctComplete 的值返回三個值中的一個,不過使用的是 Switch 函數,該函數返回的是多個表達式中計算結果為 True 的第一個表達式的值:
復制代碼 =Switch(Fields!PctComplete.Value >= .8, "Green", Fields!PctComplete.Value >= .5, "Amber", Fields!PctComplete.Value < .5, "Red")
報表函數
Reporting Services 提供了可用于操作報表中的數據的其他報表函數。本節舉例說明了其中兩個函數。有關報表函數和示例的詳細信息,請參閱 ReportViewer 報表的內置函數。
-
Sum 函數可計算某一分組或數據區域中多個值的和。此函數可用于表格組的頁眉或頁腳中。以下表達式顯示了訂單分組或數據區域中數據的和:
復制代碼 =Sum(Fields!LineTotal.Value, "Order") -
如果將包含 RowNumber 函數的表達式用于數據區域中的文本框中,則該表達式將顯示表達式所在文本框的每個實例的行號。此函數可用于給表格中的各行加編號。還可以將其用于更復雜的情況,例如,根據行號提供分頁符。有關詳細信息,請參閱本主題中后面的“分頁符”。
以下表達式顯示了從最外面數據區域的第一行到最后一行的行號。Nothing 關鍵字表示函數將從最外面數據區域的第一行開始計數。若要從子數據區域開始計數,可使用數據區域的名稱。
復制代碼 =RowNumber(Nothing)
報表數據的外觀
可以使用表達式來控制數據在報表上的顯示形式。例如,可以在一個文本框中顯示兩個字段的值、顯示報表的有關信息或影響報表中分頁符的插入方式。
頁眉和頁腳
在設計報表時,可能需要在報表的頁腳顯示報表名稱和頁碼。為此,可使用以下表達式:
-
以下表達式提供了報表的名稱以及它的運行時間??梢詫⒃摫磉_式放入報表頁腳或表體的文本框中。 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 的文本框的數據區域。
-
以下表達式位于頁眉左側的文本框中,提供了頁面上 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)
可以對頁眉或頁腳中所引用的報表項應用聚合函數。(不過,不能對表體中所引用的報表項應用聚合函數。)以下示例說明了如何顯示頁總頁數。該示例假定存在一個包含名為 Cost 的文本框的數據區域。
-
以下表達式位于頁眉或頁腳中,提供了頁面上的 Cost 文本框中的值的和:
復制代碼 =Sum(ReportItems!Cost.Value)注意 頁眉或頁腳中的每個表達式只能引用一個報表項。
分頁符
在某些報表中,可能需要在指定行數之后、組或報表項上放置分頁符。為此,在數據區域中創建組(通常是緊挨著詳細信息區域的組),在組中添加分頁符,然后根據指定行數在組中添加組表達式。
-
如果將以下表達式放置在組表達式中,則它將給每 25 行指定一個編號。如果為組定義了分頁符,將導致每隔 25 行插入一個分頁符。
復制代碼 =Int((RowNumber(Nothing)-1)/25)
屬性
表達式不僅用于顯示文本框中的數據。還可以用于更改將屬性應用于報表項的方式??梢愿膱蟊眄椀臉邮叫畔?#xff0c;或更改其可見性。
格式
可以使用表達式改變報表中報表項的外觀。
-
如果在文本框的 Color 屬性中使用以下表達式,則它可根據 Profit 字段的值更改文本的顏色:
復制代碼 =Iif(Fields!Profit.Value < 0, "Red", "Black") -
如果在數據區域中的報表項的 BackgroundColor 屬性中使用以下表達式,則它可更改淡綠色與白色之間的每一行的背景顏色:
復制代碼 =Iif(RowNumber(Nothing) Mod 2, "PaleGreen", "White")
可見性
可以使用報表項的可見性屬性來顯示和隱藏報表中的項。在諸如表的數據區域中,最初可以根據表達式中的值隱藏詳細信息行。
-
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)
報表參數
可以在參數中使用表達式來更改參數的默認值。例如,可以使用參數,以根據用于運行報表的用戶 ID 篩選特定用戶的數據。
-
如果將以下表達式用作參數的默認值,則它可收集運行報表的用戶的用戶 ID:
復制代碼 =User!UserID
自定義代碼
可以在報表中使用自定義代碼。自定義代碼既可以嵌入報表中,也可以存儲在報表所使用的自定義程序集中。有關自定義代碼的詳細信息,請參閱向 ReportViewer 報表中添加自定義代碼。
-
以下示例調用了 ToUSD 嵌入代碼方法,該方法將 StandardCost 字段值轉換為美元值:
復制代碼 =Code.ToUSD(Fields!StandardCost.Value)本文轉自94cool博客園博客,原文鏈接:http://www.cnblogs.com/94cool/p/4283809.html,如需轉載請自行聯系原作者
總結
以上是生活随笔為你收集整理的在 ReportViewer 报表中使用表达式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 知识总结
- 下一篇: mysql_install_db: /u