本文和上篇博客息息相关:《 报表中的数据处理:数据运算》。页面报表、区域报表的内置函数不同,页面报表有内置函数;区域报表无内置函数,但支持.net的数据类型函数处理,如日期、ToString格式等。
页面报表的函数
您可以在表达式中使用聚合和其他函数,完全兼容Visual Basic的函数。ActiveReports 包括一系列的函数,运行时值、标准方差、标准偏差、计数、最小和最大值。
例如,使用下面的表达式来获取雇员数量。
=Count(Fields!EmployeeID.Value, Nothing)
日期时间函数:
|
|
- 使用语法请参考msdn
- .
|
|
|
- 使用语法请参考msdn
- 。
判断函数:
|
|
- 使用语法请参考msdn
- 。
过程控制函数:
|
|
- 使用语法请参考msdn
- 聚合函数:
函数 |
描述 |
语法样例 |
AggregateIf |
通过判断表达式,是否需要进行聚合运算,类似Excel的CountIF |
=AggregateIf(Fields!Discontinued.Value=True, Sum, Fields!InStock.Value) |
Avg |
对非空值进行平均运算 |
=Avg(Fields!Cost.Value, Nothing) |
Count |
对非空值进行计数运算 |
=Count(Fields!EmployeeID.Value, Nothing) |
CountDistinct |
对非空值进行计数运算(去重) |
=CountDistinct(Fields!ManagerID.Value, "Department") |
CountRows |
计数表达式的总行数 |
=CountRows("Department") |
DistinctSum |
对表达式进行汇总(去重) |
=DistinctSum(Fields!OrderID.Value, Fields!OrderFreight.Value, "Order") |
First |
返回表达式的第一个数据记录 |
=First(Fields!ProductNumber.Value, "Category") |
Last |
返回表达式的最后一个数据记录 |
=Last(Fields!ProductNumber.Value, "Category") |
Max |
对非空值进行求最大值运算 |
=Max(Fields!OrderTotal.Value, "Year") |
Median |
返回表达式结果的中间值。 |
=Median(Fields!OrderTotal.Value) |
Min |
对非空值进行求最小值运算 |
=Min(Fields!OrderTotal.Value) |
Mode |
返回最常出现的值 |
=Mode(Fields!OrderTotal.Value) |
RunningValue |
运算表达式,通过其他聚合函数作为传入的参数 |
=RunningValue(Fields!Cost.Value, Sum, Nothing) |
StDev |
计算表达式的非空值的标准偏差 |
=StDev(Fields!LineTotal.Value, "Order") |
StDevP |
计算表达式的非空值的总体标准偏差 |
=StDevP(Fields!LineTotal.Value, "Order") |
Sum |
汇总表达式 |
=Sum(Fields!LineTotal.Value, "Order") |
Var |
计算表达式的的标准偏差的平方 |
=Var(Fields!LineTotal.Value, "Order") |
VarP |
计算表达式的的总体标准偏差的平方 |
=VarP(Fields!LineTotal.Value, "Order") |
- 使用语法细节请参考msdn
- 类型转换:
|
|
其他函数:
函数 |
描述 |
语法 |
|||
InScope |
判定当前值是否在所指示的范围。 |
=InScope(<Scope>) =InScope("Order") |
|||
Level |
返回递归层次结构中的目前值的水平数字。 |
=Level( optional <Scope>) =Level() =Convert.ToString (2 + (Level()*10)) &"pt" |
|||
Previous |
返回指定范围的前一个值 |
=Previous(<Expression>) =Previous(Fields!OrderID.Value) |
|||
RowNumber |
返回数据行数或者指定范围内行数 |
=RowNumber( optional <Scope>) =RowNumber() |
|||
GetFields |
返回字典IDictionary<string,Field>: 包含当前字段的集合。 仅用于数据源。一般用于给自定义函数传递参数。 |
=GetFields() =Code.DisplayAccountID(GetFields())
|
区域报表的函数:
使用数学表达式
改变文本框的 DataField 属性以便计算一个数学表达式(函数)。
例如:
=UnitPrice+5
=Quantity-5
=Quantity*UnitPrice
=UnitPrice/QuantityPerUnit
使用子字符串
改变文本框的 DataField 属性,如果需要子字符串。如果是设置分组,改变 GroupHeader 的 DataField 属性为同样的子字符串。
例如:
=ProductName.Substring(0, 1)
使用日期/时间
改变文本框的 DataField 属性如下所示。
例如:
=System.DateTime.Now.ToString()
创建一个条件值
改变文本框的 DataField 属性以便使用一个需要的条件判断
例如:
=(UnitsInStock > 0)?"In Stock":"Backorder
连接字段
改变文本框的 DataField 属性如下所示。
例如:
="There are " + UnitsInStock + " units of " + ProductName + " in stock."
=TitleOfCourtesy + " " + FirstName + " " + LastName
注意:ActiveReports 会自动的处理 null 值,替换为空字符串。
计算取整
改变文本框的 DataField 属性如下所示。
例如:
=(double)System.Math.Round(UnitsInStock/10)
计算取模
改变文本框的 DataField 属性如以下所示,以便获得余数(在这个例子中是 2 )。
例如:
=22%(5)
替换 null 值
改变文本框的 DataField 属性如下,以便使用自定义的值替换 nulls 。
例如:
=(UnitsInStock == System.DBNull.Value) ? "No Units In Stock" : UnitsInStock
源码下载: