[]
        
(Showing Draft Content)

其他函数

除了以上所述各类通用函数,报表还支持微软RDL标准规范中的其他函数,以及一些特殊用途的函数。有关RDL标准规范函数,参见微软MSDN: https://msdn.microsoft.com/zh-cn/library/ms252112(v=vs.80)

其他函数

函数

说明

语法

GetFields

返回字段列表集合,仅限数据区域内使用。此函数可令复杂条件的表达式更易于编写。

=GetFields()

InScope

判断当前值是否在某个作用域内。

InScope(<作用域>)

Level

返回当前值在层次结构中的级别。层次结构的第一级是0。

Level()

Level(with scope)

在指定的作用域内,返回当前值在层次结构中的级别。层次结构的第一级是0。

Level(<作用域>)

Lookup

返回外键关联的另一数据集的指定字段值。

Lookup(<主数据集字段>, <关联数据集匹配字段>, <关联数据集数据字段>, <关联数据集名称>)

Lookupset

从指定的数据集中返回多行数值。

LookupSet(<主数据集字段>, <关联数据集匹配字段>, <关联数据集数据字段>, <关联数据集名称>)

Previous

返回指定作用域中的前一个值,例如上一行记录的某一字段的值。

Previous(<表达式>)

RowNumber

返回当前行号

RowNumber()

RowNumber(with scope)

返回指定作用域内的记录行号。

RowNumber(<作用域>)

GetLength

获得数组的长度。参数为0或1,代表数组的维。

<Collection>.GetLength(<Number>)

Item

由Fields/Parameters/ReportItems按名称返回内容。

<Object | Record>.Item(<String>)

Join

连接指定数组的元素或集合的成员,在每个元素或成员之间使用指定的分隔符。

Join(<数组>, <分隔符>)


其中,应用较多的是Lookup函数、LookupSet函数、RowNumber函数和Join函数。

Lookup函数示例-同一表格中显示不同数据集的数据

Lookup函数的典型用途是将多个数据集合并展示在同一个表格元素中,解决跨源整合的问题。

函数语法定义:

{Lookup(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupDataset>)}

参数说明:

  • SourceExpression:主数据集的一个字段值,通常是数据库外键字段值。

  • DestinationExpression:关联数据集的一个字段值,通常是数据库外键字段所参照的表的主键字段值。该字段的值应等于主数据集的SourceExpression字段值。

  • ResultExpression:关联数据集的另一个字段值,通常是数据库外键字段所参照的表的数据字段值。该字段值将显示在表格中。

例如,创建报表后,分别创建一个名为“产品”的报表数据源,数据表为产品表;和一个名为“类别”的数据源,数据表为类别表。


在产品类别下面的单元格输入表达式:{Lookup(类别ID, 类别ID, 类别名称, "类别_DataSet")},如下图:


报表预览如下图:


LookupSet函数示例- 同一表格中显示不同数据集的多行数据

LookupSet函数从指定的数据集中返回多行数值,因此您可以使用此函数来实现1对多的返回关系。

LookupSet函数返回的数据集字段与常规数据集字段用法相同,可以在数据区域范围内的函数/聚合中进行使用。

函数语法定义:

LookupSet(<SourceExpression>, <DestinationExpression>, <ResultExpression>, <LookupSetDataset>)

参数说明:

  • SourceExpression:主数据集的一个字段值,通常是数据库外键字段值。

  • DestinationExpression:关联数据集的一个字段值,通常是数据库外键字段所参照的表的主键字段值。该字段的值应等于主数据集的SourceExpression字段值。

  • ResultExpression:关联数据集的另一个字段值,通常是数据库外键字段所参照的表的数据字段值。

  • LookupSetDataset:常量,关联数据集的名称。

例如,创建报表后,分别创建一个名为“产品”的报表数据源,数据表为产品表;和一个名为“类别”的数据源,数据表为类别表。



在产品类别下面的单元格输入表达式:{Join(Lookupset(类别ID, 类别ID, 产品名称, "产品_DataSet"), ",")},如下图:


下面的报表显示了每种商品类别中包含的商品名称,并将商品名称显示为以逗号分隔的字符串。

这里使用Join函数将LookupSet函数的查询结果转换为字符串进行显示。

报表预览如下图:


RowNumber函数示例-控制不同行显示不同颜色

RowNumber函数返回当前行号,典型用途是实现行号自动展示和表格交替背景色。

操作步骤

1. 设置表格,将表格第二行第一个单元格设置为“{RowNumber()}”,标题为“行号”,如下图:


2. 选中表格数据明细行整行,在属性设置的背景选项区域,选择颜色后面的,选择“表达式”,如下图


3. 输入表达式“{IIF(RowNumber(Nothing) Mod 2, Silver, "White")}”,该表达式的含义为:如果行号能被2整除,则背景色为银色(Silver,视觉效果为浅灰色),否则为白色。

预览报表效果,如下图:


Join函数示例-将数组显示在报表内容中

使用Join函数可以将数组转换为字符串。

比如希望将多选下拉列表中勾选的内容显示在报表中,如下图所示,就需要用到Join函数。因为此时报表参数是一个多值参数的数组,直接使用会显示为“System.Object[]”,不能获取到数组中的具体值。

使用Join函数将数组转换为字符串才可以将具体的值显示出来。


操作步骤

1. 参考多选下拉列表示例,制作一个多值参数的下拉列表。

2. 添加页眉。


3. 将报表参数拖拽到页眉区域,并调整文本框大小以及居中方式。


4. 将表达式调整为:{Join(@类别名称, ",")}-销售明细表 。

表达式解析:表达式中Join 函数将参数获取到的数组用逗号拼接为字符串,这样才可以显示出来。后边的“-销售明细”为拼接的固定字符串,直接显示。


5. 预览报表,查看效果。报表页眉会根据勾选的查询条件来动态的显示参数值。