Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SSRS报告向不同的用户显示不同的记录。这是如何实现的?_Sql Server_Reporting Services_Role Based - Fatal编程技术网

Sql server SSRS报告向不同的用户显示不同的记录。这是如何实现的?

Sql server SSRS报告向不同的用户显示不同的记录。这是如何实现的?,sql-server,reporting-services,role-based,Sql Server,Reporting Services,Role Based,我最近遇到一个要求,即“经理应该查看所有记录,但员工只能查看适当的子集。我将用下面的示例解释我的要求 我有一张桌子 CREATE TABLE [dbo].[Empolyee]( [EmpID] [int] NOT NULL, [Name] [nvarchar](50) NOT NULL, [Salary] [int] NULL, [Grade] [char](1) NULL ) 还有一些数据 insert into Empolyee values(1, '

我最近遇到一个要求,即“经理应该查看所有记录,但员工只能查看适当的子集。我将用下面的示例解释我的要求

我有一张桌子

CREATE TABLE [dbo].[Empolyee](
    [EmpID] [int] NOT NULL,
    [Name] [nvarchar](50) NOT NULL,
    [Salary] [int] NULL,
    [Grade] [char](1) NULL
)   
还有一些数据

insert into Empolyee values(1, 'John', 200, 'C')

insert into Empolyee values(2, 'Jim', 100, 'D')

insert into Empolyee values(3, 'Jane', 500, 'A')

insert into Empolyee values(4, 'Jack', 150, 'C')

insert into Empolyee values(5, 'Jil', 300, 'B')

insert into Empolyee values(6, 'Josh', 350, 'B')
A是最高等级,D是最低等级

我想在SSRS中创建员工详细信息报告

简单地显示

从Empolyee中选择*

现在的要求是用户应该能够看到他/她的记录和较低级别的人员

例如。 如果简看到报告,她会看到所有的6。 如果杰克看到报告,她应该只看到2个(他和吉姆的)

我可以看出这是基于角色的安全性,但如何实现这一点?

选择B.[Name]作为[Name2],B.[Salary]作为[Salary2],B.[Grade]作为[Grade2]
Select B.[Name] AS [Name2],B.[Salary] AS [Salary2],B.[Grade] AS [Grade2] 
from Empolyee A
Cross jOIN Empolyee B
WHERE A.Grade <= B.Grade
and A.Name like 'Jack' -- mention your user here
AND B.EmpID NOT IN (Select EmpID FROM Empolyee C 
 WHERE C.Grade = A.Grade and C.Name <> A.Name)
来自Empolyee A 交叉连接Empolyee B
其中A.Grade wow!可以处理它的查询级别…这样我们就可以控制显示的记录!我们可以控制列…例如,A可以看到薪资列,而其他所有列都不能。这样的事情可以实现吗?通过设置薪资列的可见性属性可以很容易地实现示例=iif(参数!Grade.Value=“A”,False,True)@Pritesh是的,可以实现。我的答案对你有用吗?@如果是的话,我现在可以控制记录的数量…如何控制列?