帆软报表sql数据集,动态参数为数组如何添加到sql数据集语句中并进行判断。

微信图片_20201112092736.png

FineReport 遇见0817 发布于 2020-11-12 09:29 (编辑于 2020-11-12 09:32)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2020-11-12 09:50
select * from 表 where 1=1 
${if(len(控件名)=0,"","and 字段 in ('"+joinarray(控件名,"','")+"')")}


  • 遇见0817 遇见0817(提问者) 为什么要等于0
    2020-11-12 10:33 
  • axing axing 回复 遇见0817(提问者) 参数的长度为0,就是当参数为空的时候,不做判断
    2020-11-12 10:38 
最佳回答
0
ekDanLv6初级互助
发布于2020-11-12 09:32

你在说啥兄弟,

  • 遇见0817 遇见0817(提问者) 就是 编写数据集用的是sql语句 如何将前端传过来的过滤参数数组,在sql数据集语句中以动态参数的方式进行判断。
    2020-11-12 09:35 
  • 遇见0817 遇见0817(提问者) 直接点,之前动态过滤参数可能是单个,现在是数组的形式,怎么在sql数据集中运用。
    2020-11-12 09:37 
  • ekDan ekDan 回复 遇见0817(提问者) 假如动态参数为test,那不就是 select test from table where 1 = 1 and ${if(len(test) == 0,\"\",\"and test in (\'\" + test + \"\')\")} 是这种效果吗
    2020-11-12 09:41 
  • ekDan ekDan 回复 遇见0817(提问者) 没有那个斜杠啊,我也不知道为啥这个自动给我加上反斜杠了
    2020-11-12 09:42 
  • 遇见0817 遇见0817(提问者) 回复 ekDan 我先试一下先。
    2020-11-12 09:45 
最佳回答
0
snrtuemcLv8专家互助
发布于2020-11-12 09:36(编辑于 2020-11-12 09:42)

第一,多选控件,返回字符串

第二,sql语句写法 

select * from 表 where 1=1 
${if(len(控件名)=0,"","and 字段 in ('"+控件名+"')")}


image.png


参数如果'1','2','3'格式
直接select * from 表 where 1=1
${if(len(控件名)=0,"","and 字段 in ("+控件名+")")}
如果是1,2,3格式
select * from 表 where 1=1
${if(len(控件名)=0,"","and 字段 in ('"+replace(控件名,",","','")+"')")}


  • 遇见0817 遇见0817(提问者) 我如果不加控件,数组参数是前端勾选的过程中传递过来的呢。
    2020-11-12 09:39 
  • snrtuemc snrtuemc 回复 遇见0817(提问者) 参数如果\'1\',\'2\',\'3\'格式 直接select * from 表 where 1=1 ${if(len(控件名)=0,\"\",\"and 字段 in (\"+控件名+\")\")} 如果是1,2,3格式 select * from 表 where 1=1 ${if(len(控件名)=0,\"\",\"and 字段 in (\'\"+replace(控件名,\",\",\"\',\'\")+\"\')\")}
    2020-11-12 09:42 
  • 遇见0817 遇见0817(提问者) 回复 snrtuemc 这个数组里面的参数数量是动态的啊,可能是一个,也有可能是两个。我先试一下。
    2020-11-12 09:45 
  • 4关注人数
  • 1277浏览人数
  • 最后回答于:2020-11-12 09:50
    请选择关闭问题的原因
    确定 取消
    返回顶部