根据登录用户控制报表展现效果(动态宏)

新建一张空白报表
1、首先进行参数和宏的设置。
报表属性】->【参数定义】如图:

我们的目的是根据登录的用户不同,在arg1(sys_UserID)中获取不同的值,来选择要进行过滤的字段,例如sys_UserID==root,则获取所有雇员信息,否则根据登录用户的ID不同,获取该员工的个人信息表。
那么如何才能将这些可按参数选择的规则实现到SQL中呢,普通的宏只可能实现一个规则,这时候就需要使用动态宏。
所谓动态宏,与动态参数十分类似,简单的说就是可以使用表达式的宏。在本例中,添加一个新宏:
【报表属性】->【宏定义】

选择宏的类型为动态宏。值的表达式为:
if(sys_UserID==”root”,” 1=1″,”雇员ID=9″)
这个宏的作用预计是用来做数据集的检索条件的,其表达式作用是按照arg1(sys_UserID)的值选择不同的检索条件。
2、建立数据集。
1)ds01:SELECT * FROM DEMO_EMPLOYEE where ${macro1}

2)切换到宏配置tab页,在配置通用查询字段tab页中,提取宏并为宏配置数据表。
3)预览数据。
3.制作如图报表:

A1单元格表达式为:
=if(@sys_UserID==”root”,”所有雇员信息表”,@sys_UserID+”个人信息表”)
其内容是显示出当前的过滤条件。
4.保存并预览报表
使用root时登录,报表效果如:

使用其他ID登录时预览效果如:

本文标签: