根据角色分配权限时,如何设置只有一个角色满足就可以对报表进行操作?

image.png

image.png

如图,在数据集里绑定了角色,当角色为动力厂时可以查看报表中的数据;

韩文的角色为动力厂,可以查看;孙林虽然有动力厂的角色,但是不能查看;

如何在数据集中设置只有一个角色满足就可以查看呢?

FineReport 用户YWMYW1541607 发布于 2022-9-18 10:47
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-18 10:49(编辑于 2022-9-18 11:24)

${if(len(fine_role)=0," and 1=0","and t1.yjgx in('"+ replace(fine_role,",","','") + "')")}

上面的公式意思。如果在角色中检查有动力厂的关键字就返回动力厂,否则我就返回等于看不了。这个看不了三个字是随便返回的。意思就是没有满足条件的。所以就不会查询出来数据了。

  • 用户YWMYW1541607 用户YWMYW1541607(提问者) 动力厂是我举得一个例子,不是一个固定的值,而是任何可能的值,这个要怎么写呢?
    2022-09-18 11:04 
  • CD20160914 CD20160914 回复 用户YWMYW1541607(提问者) 有多个值的时候。把多个角色全部传进去?
    2022-09-18 11:17 
  • CD20160914 CD20160914 回复 用户YWMYW1541607(提问者) 参考上面修改的。
    2022-09-18 11:24 
  • 用户YWMYW1541607 用户YWMYW1541607(提问者) 回复 CD20160914 感谢~
    2022-09-18 15:32 
最佳回答
0
weibwLv7高级互助
发布于2022-9-18 11:18

fine_role返回多个角色时其实是个数组。将数组用joinarray进行拼接,然后在SQL语句里拼接一个in语句就可以了

最终效果应该如下:

where 1=1

and t1.ygjgx in ${"('"+joinarray(fine_role,"','")+"')"}

image.png

  • 2关注人数
  • 289浏览人数
  • 最后回答于:2022-9-18 11:24
    请选择关闭问题的原因
    确定 取消
    返回顶部