日常开发报表过程中我们会用到关联当前登录用户的姓名(非登录名+姓名的方式)进行单报表的权限管理,即不同权限的人看到的报表是不一样的。最日常的用法是,我们需要拥有个管理员,需要全部权限。那么该怎么实现呢?
1、在数据库中建立存放权限的表,举例字段为(id,姓名,权限)输入第一行值(1,某某,管理员),可按实际情况加字段
2、在报表模板参数里添加两个参数(决策报表同样适用):
用户名 默认值为公式 值为 left($fine_display_name,find("(",$fine_display_name)-1) 注:这样我们就能获取到登录时的姓名
管理员 默认值为公式 值为 SQL("xxxx","select 权限 from 报表权限管理 where 姓名 = '"+left($fine_display_name,find("(",$fine_display_name)-1)+"'",1) 注:紫色位置为我数据库连接名字,红色字为我权限报表名字,可按实际情况修改。绿色部分是我对上面用户名参数的复用,用于查询姓名是否为管理员。
3、SQL语句中添加 where '${管理员}' = '管理员' or 负责人 = '${用户名}') 注:数据库为sql server,红色部分是我查询的报表负责人字段,意思是如果我查找姓名是否为管理员(如果姓名是管理员,相当于where1=1,即查询全表),如果条件不成立,我查找负责人为姓名的的数据。 |