本文和上篇博客息息相关:《报表中的数据处理:数据运算》。页面报表、区域报表的内置函数不同,页面报表有内置函数;区域报表无内置函数,但支持.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>) | |||
Level | 返回递归层次结构中的目前值的水平数字。 | =Level(optional <Scope>) =Convert.ToString (2 + (Level()*10)) &"pt" | |||
Previous | 返回指定范围的前一个值 | =Previous(<Expression>) | |||
RowNumber | 返回数据行数或者指定范围内行数 | =RowNumber(optional <Scope>) | |||
GetFields | 返回字典IDictionary<string,Field>: 包含当前字段的集合。 仅用于数据源。一般用于给自定义函数传递参数。 | =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
源码下载: