根据部门设置查询不同报表内容

例如;A部门的人员只可以查看评估类为半成品、成品的数据,B部门的人员可以查看所有评估类数据image.png

FineReport Chaoniubi欢 发布于 2023-8-8 13:19 (编辑于 2023-8-8 15:12)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
CD20160914Lv8专家互助
发布于2023-8-8 13:21(编辑于 2023-8-8 15:13)

权限细粒度控制- FineReport帮助文档 - 全面的报表使用教程和学习资料 (fanruan.com)

select * from 表名称 

where 1=1

${if(JOINARRAY(GETUSERDEPARTMENTS(),"")="IDC事业部","and 字段名称 in('半成品','成品')","")}

image.png

条件属性隐藏行,通过部门来判断一下(你的系统里面有部门没有?你先用$fine_position函数写在单元格看返回什么),或者单元格写公式   =GETUSERDEPARTMENTS()  看他们分别返回 什么

FIND("A部门",JOINARRAY($fine_position,""))>0&&$$$!="半成品"&&$$$!="成品"

image.png

  • Chaoniubi欢 Chaoniubi欢(提问者) 有的,A部门指的就是事业部,我输入IDC事业部,但还是没有被限制
    2023-08-08 15:04 
  • CD20160914 CD20160914 回复 Chaoniubi欢(提问者) 你先按我说的。把两个内置参数放在单元格看一下登陆决策系统以后,对应的数据显示什么!必须要登陆,用对应人的账号登陆才可以取到部门的!!
    2023-08-08 15:05 
  • Chaoniubi欢 Chaoniubi欢(提问者) 回复 CD20160914 上传了图,第一个用的是$fine_position,第二个是GETUSERDEPARTMENTS()
    2023-08-08 15:10 
  • CD20160914 CD20160914 回复 Chaoniubi欢(提问者) 那直接用第二个函数就可以判断的。。GETUSERDEPARTMENTS()
    2023-08-08 15:10 
  • CD20160914 CD20160914 回复 Chaoniubi欢(提问者) GETUSERDEPARTMENTS()=\"IDC事业部\"&&$$$!=\"半成品\"&&$$$!=\"成品\" 把斜杠去掉。或者在数据集里面过滤也可以的。
    2023-08-08 15:11 
最佳回答
0
坚定的小帆薯Lv7高级互助
发布于2023-8-8 13:38

直接在SQL中加一段数据过滤条件即可

where 1=1 ${if(find("A部门",fine_position)>0,"and 评估类 in ('半成品','成品')","")}

image.png

  • 3关注人数
  • 258浏览人数
  • 最后回答于:2023-8-8 15:13
    请选择关闭问题的原因
    确定 取消
    返回顶部