frm有权限控制,初始化无法显示数据,

写了模板参数默认值

问题:如果模板参数的sql里where area = '${权限大区}'写死 初始化就能显示数据,一旦用了参数,初始化就不显示数据了,怎么解决?

比如,如果我在模板参数里写死:where area = '南部',初始化就能显示数据,一旦我写了参数:where area = '${权限大区}',初始化就必须点击筛选框以后才显示数据,感觉参数在初始化的时候没传进去,权限大区是写在服务器数据集里的,用了fine_username 内置的参数

FineReport yzmnts5e2849120 发布于 2025-4-3 15:56 (编辑于 2025-4-3 15:59)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
用户k6280494Lv6资深互助
发布于2025-4-3 15:57

看下数据集怎么写的

  • yzmnts5e2849120 yzmnts5e2849120(提问者) 模板参数默认值:SQL("mysql", "SELECT DISTINCT SUBSTR(monitor_cycle, 1, 4) AS yr
    FROM 表1
    WHERE area = '${权限大区}'
    ORDER BY SUBSTR(monitor_cycle, 1, 4) DESC LIMIT 1", 1, 1) 然后数据集里:select distinct
    customer_id,
    customer_name,
    energy_consumption_theoretical_progress_discrepancy,
    energy_consumption_theoretical_value_progress_yc,
    energy_consumption_theoretical_value_progress_sj
    from 表1
    where ds = replace(date_sub(current_date(), interval 1 day),'-','')
    and substr(monitor_cycle,1,4) = '${yr}'
    ${if(len(权限大区) == 0,"","and area in ('" + 权限大区 + "')")}
    order by customer_id
    2025-04-03 16:02 
  • 用户k6280494 用户k6280494 回复 yzmnts5e2849120(提问者) 那你权限大区这个参数没有值啊
    2025-04-03 16:03 
  • 用户k6280494 用户k6280494 回复 yzmnts5e2849120(提问者) 你需要看下这个这参数是哪里的给你传的值,或者是页面的参数
    2025-04-03 16:03 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 用户k6280494 用的服务器数据集,通过fine_username内置参数,然后放了个下拉框存这个值,这个下拉框的空间名称叫权限大区。就是某个账号登录进去,只能看到某个区的数据
    2025-04-03 16:06 
  • 用户k6280494 用户k6280494 回复 yzmnts5e2849120(提问者) 那就需要登录决策系统,根据这个登录名来取数据的
    2025-04-03 16:08 
最佳回答
0
snrtuemcLv8专家互助
发布于2025-4-3 15:58

你有给模板参数设置默认值吗?

  • yzmnts5e2849120 yzmnts5e2849120(提问者) 设置了,模板参数默认值:SQL("mysql", "SELECT DISTINCT SUBSTR(monitor_cycle, 1, 4) AS yr
    FROM 表1
    WHERE area = '${权限大区}'
    ORDER BY SUBSTR(monitor_cycle, 1, 4) DESC LIMIT 1", 1, 1)
    2025-04-03 16:00 
  • snrtuemc snrtuemc 回复 yzmnts5e2849120(提问者) 怎么模板参数默认值,还有参数过滤。。。
    2025-04-03 16:02 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 snrtuemc 是的加了过滤就不对了,因为这个默认值是带权限管控的...只能写参数,请问下如果有这种权限管控,这个筛选框模板参数的默认值应该怎么写呀。我的数据集是这么写的:select distinct
    customer_id,
    customer_name,
    energy_consumption_theoretical_progress_discrepancy,
    energy_consumption_theoretical_value_progress_yc,
    energy_consumption_theoretical_value_progress_sj
    from 表1
    where ds = replace(date_sub(current_date(), interval 1 day),'-','')
    and substr(monitor_cycle,1,4) = '${yr}'
    ${if(len(权限大区) == 0,"","and area in ('" + 权限大区 + "')")}
    order by customer_id
    2025-04-03 16:04 
  • snrtuemc snrtuemc 回复 yzmnts5e2849120(提问者) 给默认值,需要能出固定值或者动态值,不能再用参数去过滤了,不然不行的
    2025-04-03 16:05 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 snrtuemc 但是写不死....动态值sql也不行,不同账号的默认值不一样,只能通过area = '${权限大区}' 才能知道这个账号的默认值是啥,请问有别的办法能在初始化的时候显示吗
    2025-04-03 16:08 
最佳回答
0
ID1208Lv6高级互助
发布于2025-4-3 16:03

image.png

  • yzmnts5e2849120 yzmnts5e2849120(提问者) 不能写死,是动态变化的,每个账号点开的默认值不一样...是通过权限大区来管控的
    2025-04-03 16:04 
  • ID1208 ID1208 回复 yzmnts5e2849120(提问者) 用公式,根据当前登录人,或者当前登录角色动态取
    2025-04-03 16:06 
  • ID1208 ID1208 回复 yzmnts5e2849120(提问者) SQL函数--https://help.fanruan.com/finereport/doc-view-846.html
    2025-04-03 16:09 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 ID1208 不是很明白,可以给个具体的例子吗,我现在是服务器数据集,通过fine_username内置参数
    2025-04-03 16:09 
最佳回答
0
江思成Lv5见习互助
发布于2025-4-3 16:27

兄弟,你这段SQL("mysql", "SELECT DISTINCT SUBSTR(monitor_cycle, 1, 4) AS yrFROM 表1WHERE area = '${权限大区}'ORDER BY SUBSTR(monitor_cycle, 1, 4) DESC LIMIT 1", 1, 1)  sql函数写错了,参考 :SQL("数据连接名","select * from 表where 字段="+$控件名+"",1,1) 

  • yzmnts5e2849120 yzmnts5e2849120(提问者) 改成:SQL("mysql", "SELECT DISTINCT SUBSTR(monitor_cycle, 1, 4) AS yr
    FROM 表1
    WHERE area = "+$area_qx+"
    ORDER BY SUBSTR(monitor_cycle, 1, 4) DESC LIMIT 1", 1, 1) 好像也不行...不知道初始化显示默认值到底该怎么做,没办法写死默认值
    2025-04-03 16:38 
  • 江思成 江思成 回复 yzmnts5e2849120(提问者) 我看上面那么多的交流,我复述一下你的需求,数据集里的是你主体数据,想通过权限大区取到yr,然后yr再回传到你主体数据集里是吗?如果是这样的,你可以使用(SELECT DISTINCT SUBSTR(monitor_cycle, 1, 4) AS yr
    FROM 表1
    WHERE area = "+$area_qx+"
    ORDER BY SUBSTR(monitor_cycle, 1, 4) DESC LIMIT 1) 代替 你主体数据集sql里的 '${yr}' ,这样就能实现你的功能,如果你想进行调试,可以设置模板参数,para1设置成 area_qx(权限大区),值设置为南部
    2025-04-03 16:51 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 江思成 您好,我试了很久,现在仍然没办法实现:初始化的时候数据展示,还是只有在初始化以后点击某个值,才能刷新数据。我尝试了模板参数写死:yr= 2025,office=上海,初始化的时候是显示的,所以问题可能还是出在初始化的时候默认参数值没有正确的回传到数据集里,请问下您说的权限大区.select(权限大区)具体应该怎么展示~我的数据集里是没有权限大区的,我是放了2个下拉框,分别存储areaqx(权限大区),权限officeqx。然后在下拉框yr的数据集里写参数: ${if(len(areaqx) == 0,"","and t3.area in ('" + areaqx + "')")}
    ${if(len(officeqx) == 0,"","and t2.customer_city in ('" + officeqx + "')")} 在下拉框office的数据集里写参数: ${if(len(yr) == 0,"","and t2.monitor_start_yr in ('" + yr + "')")}
    ${if(len(areaqx) == 0,"","and t3.area in ('" + areaqx + "')")}
    ${if(len(officeqx) == 0,"","and t2.customer_city in ('" + officeqx + "')")} 麻烦能看下这样到底是哪里有问题吗,谢谢~
    2025-04-07 14:37 
最佳回答
0
FR-LeonLv4初级互助
发布于2025-4-3 16:58

解决了嘛,还需要帮助不,我这边有方案可以解决

  • yzmnts5e2849120 yzmnts5e2849120(提问者) 没解决,求解决方案,麻烦了
    2025-04-03 17:10 
  • FR-Leon FR-Leon 回复 yzmnts5e2849120(提问者) 默认值设置公式,权限大区.select(权限大区)
    2025-04-03 17:25 
  • yzmnts5e2849120 yzmnts5e2849120(提问者) 回复 FR-Leon 您好,我试了很久,现在仍然没办法实现:初始化的时候数据展示,还是只有在初始化以后点击某个值,才能刷新数据。我尝试了模板参数写死:yr= 2025,office=上海,初始化的时候是显示的,所以问题可能还是出在初始化的时候默认参数值没有正确的回传到数据集里,请问下您说的权限大区.select(权限大区)具体应该怎么展示~我的数据集里是没有权限大区的,我是放了2个下拉框,分别存储areaqx(权限大区),权限officeqx。然后在下拉框yr的数据集里写参数: ${if(len(areaqx) == 0,"","and t3.area in ('" + areaqx + "')")}
    ${if(len(officeqx) == 0,"","and t2.customer_city in ('" + officeqx + "')")} 在下拉框office的数据集里写参数: ${if(len(yr) == 0,"","and t2.monitor_start_yr in ('" + yr + "')")}
    ${if(len(areaqx) == 0,"","and t3.area in ('" + areaqx + "')")}
    ${if(len(officeqx) == 0,"","and t2.customer_city in ('" + officeqx + "')")} 麻烦能看下这样到底是哪里有问题吗,谢谢~
    2025-04-07 14:37 
  • 6关注人数
  • 108浏览人数
  • 最后回答于:2025-4-3 16:58
    请选择关闭问题的原因
    确定 取消
    返回顶部