报表知识库
我要提问

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

  新建一张空白报表

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登录时预览效果如: