1.描述

本节为您介绍表达式编辑器中各类表达式元素的用法。

2.常量数值

常量即数字、字符串等静态内容,如123,"abc"等。

3.内置数据

内置字段是指报表平台内置的域值,比如当前页号和报表总页数等。

例如选择“第N页、共M页”,表达式将新增以下内容:

第 {&PageNumber} 页、共 {&TotalPages} 页

预览报表时,文本框的内容如下图:

4.报表参数

当在报表设计器中定义了报表参数后,此处报表参数节点就会将列出已定义的参数。双击参数插入到表达式中时,形式为:{@报表参数1}

5.数据集

数据集节点下的内容为报表中绑定的数据集以及数据集中的字段。如下图:

6.位运算

报表的位运算不仅包括通常意义上的算术运算符、连接运算符、比较运算符和逻辑运算符,还包括一些特殊运算符,如点操作符等。

1.算术运算符

算术运算符包括+(加法运算符)、- (减法运算符)、/ (除法运算符)、\(整除运算符)、Mod(取模运算符)、^(乘幂运算符),下面逐一进行介绍。

算术运算符用法

说明
  • 算术运算符的优先顺序依次为:乘幂运算符(^) —— 乘法和除法运算符(*、/,两者没有优先顺序) —— 整除运算符(\) —— 取模运算符(Mod) ——加法和减法运算符(+、-,两者没有优先顺序)。
  • 若在同一代码中多次使用同一个算术运算符,则从左到右运算。
  • 使用括号可以改变优先顺序。

2.比较运算符

普通比较运算符

比较运算符包括<(小于)、>(大于)、=(等于)、>=(大于或等于)、<=(小于或等于)、<>(不等于),用于数据元素的比较。

其一般的语法为:

结果=表达式1 <比较运算符> 表达式2

结果为True(1)、False(0)或者为Null。其中比较运算符可以单独使用,也可以两两结合使用。如果表达式1或者表达式2本身为Null时才会产生Null的结果。

下面结合上述语法,对这些比较运算产生的结果为True或False时所需要的条件进行说明:

比较运算符可用于数值比较或字符串变量比较,也可用于数值与字符串的比较。如果其中一个表达式是数值,另一个是字符串,则数值表达式总是“小于”字符串表达式;如果都是字符串,则最大的字符串就是最长的字符串;如果字符串一样长,则小写的大于大写的。

Is运算符

有一个特殊的比较运算符,即Is运算符,可用于判断两个对象变量是否指向同一个对象,其语法为:结果=对象1 Is 对象2
如果对象1和对象2都指向同一个对象,其结果为True;否则,结果为False。
还可以用Is运算符来判断一个对象变量是否符合要求,例如,条件判断语句If objVar Is Nothing Then 表明,如果对象变量objVar没有对象引用,则为True,执行Then后面的语句。

Like运算符

Like运算符用于判断给定的字符串是否与指定的模式相匹配,其语法为:

结果=字符串 Like 模式

其中,字符串为要与模式相比较的字符串,如果字符串与指定的模式相匹配,则结果为True;否则,其结果为False。如果字符串或者模式Null,则结果为Null。

在模式中可使用一些特殊字符作为通配符,其它的字符都能与它们相匹配,这些字符有:?代表任意一个字符;*代表0或多个字符;#代表任意一个数字(0-9);[charlist]代表字符列表中的任意一个字符;[!charlist]代表不在字符列表中的任意一个字符;[]代表空字符串(“”)。

Charlist将模式中的一组字符与字符串中的一个字符进行匹配,可以包含任何一种字符,包括数字;在Charlist中使用连字号(-)产生一组字符来与字符串中的一个字符相匹配,如[A-D]与字符串相应位置的A、B、C或D匹配;在Charlist中可以产生多组字符,如[A-D H-J];各组字符必须是按照排列顺序出现的;在Charlist的开头或结尾使用连字号(-)或以与连字号自身相匹配,例如[-H-N]与连字号(-)或H到N之间的任何字符相匹配;在Charlist中的一个字符或者一组字符前加上!号,表明与该字符或该组字符之外的所有字符匹配,如[!H-N]与字符H-N范围之外的所有字符匹配;而在[]外使用!号则只匹配其自身。

要使用任何特殊字符作为匹配字符,只需将它放在[]中即可,例如[?]表明要与一个问号进行匹配。

比较运算符的优先顺序

如果多个比较运算符出现在同一行代码中,则按从左到右的顺序计算。

3.连结运算符

下面对这两种连接运算符进行举例说明:

4.逻辑运算符

逻辑运算符用法

逻辑运算符允许对一个或多个表达式进行运算,并返回一个逻辑值。逻辑运算符包括:And(逻辑与)、Or(逻辑或)、Not(逻辑非)、Eqv(与或)、Imp(蕴含)、Xor(异或)。

结果=表达式1 And 表达式2

例如,If x>1 And y<10 Then,表示如果x的值大于1且y的值小于10时,就执行Then后面的代码。

结果=表达式1 Or 表达式2

例如,If x>1 Or y<10 Then,表示如果x的值大于1,或者y的值小于10,则执行Then后面的代码。

结果=Not 表达式

例如,If Not IsError(x) Then,如果IsError返回False则执行Then后面的代码,表示x中不包含错误。

结果=表达式1 Xor 表达式2

逻辑运算符的优先顺序

逻辑运算符的优先顺序依次为:Not——And——Or——Xor。如果在同一行代码中多次使用相同的逻辑运算符,则从左到右进行运算。

5.位操作符

位操作符用于对二进制数据进行移位操作。

<< 执行左移,例如:4<<2 表示将数字4的二进制数形式(100)左移2位,成为二进制的10000,即十进制数的16。
>> 执行右移,例如:4>>2的结果是1。

6.运算符的优先顺序

当一行代码中包括几类运算符时,其优先顺序为:算术运算符——连接运算符——比较运算符——逻辑运算符。

如果您要改变同类或不同类运算符的优先顺序,可以使用括号,括号内的表达式总比括号外的优先进行运算。

7.常用函数

表达式函数按其功能分为日期(如 DateAdd)、数学(如 Abs)、检测(如 IsArray)、流程(如 IIF)、集合(如 Sum)、转换(如 ToString)以及其他(如 Lookup)。

有关函数用法的具体用法,请参见常用函数

8.报表元素

报表元素节点下列出了当前可调用的报表元素,双击添加到表达式中后形式为:{#文本框1}


回到顶部