微软BI SSRS渐悟之简单的数据权限控制

浏览: 2929

引言

最近不只一位朋友问到SSRS如何实现权限控制?如何不同的用户查看同一报表显示不同的数据?对于没有接触过编程的同学来说这可能真的是有些难度的,也不一定是难度可能是想法上的空白。而从开发转过来的同学马上就能想到这其实就是代入一个身份,通过用户权限来过滤数据而已。更直白来说,对于报表来说没有任何变化,只是查询多了一个过滤条件而已。

思路

RS中实现权限控制,有两点是一定要具备的

1、不同的登录用户,如果你所有的用户访问RS报表都是通过系统用户来访问的,那你先绕行去解决这个问题;

2、业务数据中有能够区分用户或权限的标识,比如:你想实现不同的销售人员查看自己的数据,你的销售数据中一定要有销售人员属性,直接或间接无所谓,查询复杂度而已;想实现不同的销售经理查看自己手下销售的数据,那就不只是销售数据中要有销售人员属性,还要有能够反映出销售经理和销售人员对应关系的表。


RS中实现权限控制,一个很重要的知识点

内置字段中有一个UserID变量,它能够获取到当前登录人的帐号



大家可以拖一个文本框,值就是这个变量,运行,显示的就是你登录Windows的帐号(我这儿是donge\lovez)。

实现

数据准备

create table sales
(
id int identity(1,1) primary key,
goods_id int not null, --商品ID
goods_num int not null, --商品数量
goods_price decimal(5,1), --商品价格
sales_account varchar(32) --销售人员
)
go

insert into sales values(1,1,30,'donge\lovez'),
(1,2,30,'donge\lovez'),
(2,1,50,'donge\lovez'),
(3,1,1000,'donge\other')
go

需求模拟

*不同销售人员查看自己的销售总额

select sum(goods_num * goods_price) from sales where sales_account = 'donge\lovez'

上面这条SQL能够查询销售人员是donge\lovez的销售总额,不同销售,替换条件就OK了。

万事具备,进入报表设计。

step1、添加数据集


step2、配置参数

第一步确定之后,会在“报表数据”-“参数”下面生成一个sales_account的参数。有两种做法,1是给这个参数配置userid默认值,2是删除这个参数,打开数据集的配置界面,参数选项卡直接配置参数。这儿我们采用第一种。




step3、设计展示

我这儿就简单的显示下:xxxx 您好,您的销售总额是:xxxxx



step4、预览


在设计模式下,没有办法模拟其他用户。当然,你可以通过修改参数的默认值,或者发布到报表服务器上使用不同用户登录,甚至新建一个Windows用户切换用户来测试。

推荐 6
本文由 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

2 个评论

突然思路就有了哈,多谢大侠~~~
之前就是这样做的,
有个客户权限表, 保存userid 和客户id,然后 订单表 内联 权限表 where 权限表.userid ={userid} and 权限表.客户代码=订单表.客户代码

要回复文章请先登录注册