目录

宏的应用

一、报表实例

制作下图所示的“雇员信息表”,最后一栏根据输入值显示“家庭电话”或“邮政编码”。

二、设计过程

第1步:新建报表

第2步:引用数据集demo_雇员信息

第3步:定义宏

在菜单工具栏选择【报表属性】->【宏定义】,打开报表的“宏定义”界面,如下图所示:

 

单击【增加】按钮,添加宏tel,可对宏的名称、描述、值等做编辑,编辑完点击【确定】即可。本例中将宏值设为“家庭电话”:

第4步:定义参数

新增一个参数telephone,其它属性默认不变,值表达式为“电话”,如图所示:

第5步:定义表达式

1. F1单元格表达式为:=@telephone

2. F2单元格表达式为:= demo_雇员信息.${tel}

第6步:保存预览   

此报表保存为“雇员信息表”。预览结果如下图所示,最后一列显示家庭电话:

设置参数telephone的值为“邮编”,宏tel的值为“邮政编码”,预览时报表的最后一列显示邮政编码:

三、小结

1. 宏的作用

 宏被设计为可以替换SQL语句中的任意内容,因此它可以实现参数不能实现的功能(例如动态条件、动态表名等)。目前只有复杂SQL数据集可以设置宏。
    使用宏时,在SQL的任意位置写上宏的标记“${宏名}”,之后外部通过该名称传入宏的值时,这个值即被替换到SQL语句的对应位置中。由于SQL语句的实质是一个字符串,因此宏的值也必须是一个字符串。

2. 参数与宏的区别

参数在表达式中被当成变量来使用,在表达式进行计算的过程中,才引用参数的变量值。
    宏在表达式中是没有数据类型的符号,它指代一串字符,这串字符是表达式的一部分。报表在运算前,该表达式会进行宏替换,把宏名替换成宏值,之后才进行报表的表达式运算。与参数相比较,宏只是单纯进行字符串的替换。
    举例来说,某个表达式为 =ds1.select(${macro1}),而macro1的值为col1,那么该表达式会被替换成=ds1.select(col1),替换后才进行表达式的运算。