← 返回所有博客文章

本文和上篇博客息息相关:《报表中的数据处理:数据运算》。页面报表、区域报表的内置函数不同,页面报表有内置函数;区域报表无内置函数,但支持.net的数据类型函数处理,如日期、ToString格式等。

页面报表的函数

您可以在表达式中使用聚合和其他函数,完全兼容Visual Basic的函数。ActiveReports 包括一系列的函数,运行时值、标准方差、标准偏差、计数、最小和最大值。

 

Page_Function

例如,使用下面的表达式来获取雇员数量。

=Count(Fields!EmployeeID.Value, Nothing)

日期时间函数:

  • DateAdd
  • DateDiff
  • DatePart
  • DateSerial
  • DateString
  • DateValue
  • Now
  • Today
  • Day
  • Hour
  • Minute
  • Month
  • MonthName
  • Second
  • TimeSerial
  • TimeValue
  • TimeOfDay
  • Timer
  • TimeString
  • Weekday
  • WeekdayName
  • Year
                  使用语法请参考msdn

DateAndTime Class

                  .
            数学函数:
  • Abs
  • Acos
  • Asin
  • Atan
  • Atan2
  • BigMul
  • Ceiling
  • Cos
  • Cosh
  • E
  • Exp
  • Fix
  • Floor
  • IEEERemainder
  • Log
  • Log10
  • Max
  • Min
  • PI
  • Pow
  • Round
  • Sign
  • Sin
  • Sinh
  • Sqrt
  • Tan
  • Tanh
        使用语法请参考msdn

Math Class

判断函数:

  • IsArray
  • IsDate
  • IsDBNull
  • IsError
  • IsNothing
  • IsNumeric
      使用语法请参考msdn

Information Class

过程控制函数:

  • Choose
  • IIf
  • Switch
  • Partition
        使用语法请参考msdn

Interaction Class

        聚合函数:

函数

描述

语法样例

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

Convert Class

    类型转换:
  • ToBoolean
  • ToByte
  • ToDateTime
  • ToDouble
  • ToInt16
  • ToInt32
  • ToInt64
  • ToSingle
  • ToUInt16
  • ToUInt32
  • ToUInt64

其他函数

函数

描述

语法

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())

 

自定义函数脚本:

 

Public Function DisplayAccountID( flds as Object) as Object

If flds("FieldType").Value = "ParentAccount" Then

Return flds("AccountID").Value

Else

Return flds("ParentAccountID").Value

End If

End Function

 

区域报表的函数:

Section_Function

使用数学表达式

改变文本框的 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

源码下载: