筛选框选择数据集

大家好,我想咨询一下大家我们能否用筛选下拉框选择查询的数据集呀?

就比如参数data_select对应的下拉框有两个选项,ds1 和 ds2 

然后我们我们在数据集sql定义的查询语句类似于下面这样的逻辑:

if $data_select = 'ds1' select * from ds1

if $data_select = 'ds2' select * from ds2

请问有没有这样的方法呀,谢谢大家

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

你可以在报表中两个都放,然后根据下拉框参数,隐藏掉另一个

如果两个数据集都属于同一个数据库,那有个简单点的方法,把两串sql代码拼到一起

${IF(参数='ds1',

"ds1中的sql复制过来",

"ds2中的sql复制过来"

)},如果sql中还有其他参数引用${},需要做字符串化处理

还有一个关联数据集,可以看看,如果合适就可以用

关联数据集- FineReport帮助文档 - 全面的报表使用教程和学习资料 (fanruan.com)

字符串处理:

如果你本来的sql是 xxxx ${yyyy} zzzz ,放在里面要变成"xxxx"+yyyy+"zzzz",大概是这样

  • changchen changchen(提问者) 嗯呢谢谢,有一个是可以共用的,我现在想看看有没有可能就是可以这样去进行筛选,如果不行的话我就考虑一下别的方法
    2023-06-25 15:23 
  • changchen changchen(提问者) 谢谢大佬,测试了是可以的,再次感谢
    2023-06-25 15:27 
  • changchen changchen(提问者) 您好,我想再请教您一下字符串化处理应该怎么处理呀
    2023-06-25 15:43 
  • changchen changchen(提问者) 您好,如果是这样类型的数据,请问应该如何字符串拼接? ${IF($class_date=\'ds1\', \"select * from ds1 where 1 = 1\" + ${if(len(a) == 0,\"\",\" and a = \'\" + a + \"\'\")} + ${if(len(b) == 0,\"\",\" and b= \'\" + b + \"\'\")}, \"select * from ds2 where 1 = 1\" + ${if(len(c) == 0,\"\",\" and c = \'\" + c + \"\'\")} + ${if(len(d) == 0,\"\",\" and d= \'\" + d + \"\'\")} )} 请问我这样写有错吗?谢谢!sql和参数是单独分开的
    2023-06-25 16:31 
  • shiroko shiroko 回复 changchen(提问者) 看不清,但是完全分开只要语法没问题也是可以的。关键是${}不能多层嵌套
    2023-06-25 16:31 
最佳回答
0
luojunnanLv6见习互助
发布于2023-6-25 15:41

参考下这个:https://help.fanruan.com/finereport/doc-view-534.html

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