一个人对应多个角色

报表通过角色判断权限,但同一个人他可能是多个角色,需要如何判断权限,

sql 语句如下:

select 

GEM01 as  工厂编码,GEM02 as 工厂名称

from [dbo].[gem_file] where GEM08 = 'Y' 

and  GEM01  like (CASE WHEN '${fr_authority}' ='All'  THEN '%%' ELSE '${fr_authority}' END)

意思就是角色为ALL,输出全部工厂编码

角色为具体工厂编码,则输出相应的工厂编码

如果同个用户有两个角色, 则输出两个相应的工厂编码


FineReport history 发布于 2019-7-9 09:23 (编辑于 2019-7-9 10:21)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
2
zsh331Lv8专家互助
发布于2019-7-9 10:01(编辑于 2019-7-9 15:33)

用户如果是多角色,返回的是一个角色数组。


用这种方式去判断

${if(INARRAY('ALL',fr_authority)>0,'',''}


select 
   GEM01 as  工厂编码
  ,GEM02 as 工厂名称
from [dbo].[gem_file] where GEM08 = 'Y' 
${if(INARRAY('ALL',fr_authority)>0," "," and GEM01 in ('"+ CONCATENATE(JOINARRAY(fr_authority,"','"),"") +"')")}


  • history history(提问者) 我的sql语句要怎么改?
    2019-07-09 10:08 
  • history history(提问者) 具体能解释一下怎么操作和这段语句是什么意思嘛
    2019-07-09 11:22 
  • history history(提问者) 这样的话就没有判断角色了,直接就是全部工厂编码查出来了
    2019-07-09 13:04 
  • history history(提问者) 效果还是一样的,根本没有通过角色判断
    2019-07-09 13:29 
最佳回答
0
皮卡皮卡丘Lv4中级互助
发布于2019-7-9 09:54

用in
select * from 学生 where 姓名 in (select 姓名 from 学生 where 姓名 like '张%' or 姓名 like '王%')

  • history history(提问者) 角色值是传过来的,同个人有两个角色值的话我那个语句就不可以了
    2019-07-09 11:27 
  • 3关注人数
  • 647浏览人数
  • 最后回答于:2019-7-9 15:33
    请选择关闭问题的原因
    确定 取消
    返回顶部