下拉复选框查询,为空全查

image.png

预览时根据区域和时间展示(有默认值),机台时下拉复选框,数据来自与当前选择的区域下的机台,我想实现机台为空的时候展示当前时间和区域下的全部数据,我目前做的能实现复选展示,但是每次预览机台为空,表格也没有数据image.png如果==0后面写的“”会报缺少表达式,所以我只能写1=1

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

 ${if(len(EQP)==0, "and 1=1" , "AND e.EQUIP_ID in ( '"+EQP+"')")}

  • rmHJPhsS rmHJPhsS(提问者) 你好,还是不能为空全查
    2022-03-14 11:03 
  • CD20160914 CD20160914 回复 rmHJPhsS(提问者) 你上面还有其它限制条件呀。大哥。。。这个只是保证没有录这个参数的时候不限制,但是你上面还有其它限制条件。。。
    2022-03-14 11:05 
  • rmHJPhsS rmHJPhsS(提问者) 回复 CD20160914 我是想实现在没有录入机台这个参数的时候展示当前条件下(其他限制条件有默认值且查询有数据)的所有数据
    2022-03-14 11:17 
  • CD20160914 CD20160914 回复 rmHJPhsS(提问者) 你sql里面的参数叫EQP,,你看一下机台的参数名称是不是也叫:EQP
    2022-03-14 11:19 
  • rmHJPhsS rmHJPhsS(提问者) 回复 CD20160914 是的,我能在机台多选情况下查询出来,但是当我前面其他条件都满足,机台为空时不能全查
    2022-03-14 11:24 
最佳回答
0
让过去Lv6中级互助
发布于2022-3-14 10:48(编辑于 2022-3-14 10:49)

--

  • rmHJPhsS rmHJPhsS(提问者) WHERE e.FACTORY = \'J0014\' AND SUB_AREA_ID is not null and SUB_AREA_ID = nvl(\'${SUB}\',SUB_AREA_ID) and AREA_ID is not null and AREA_ID = nvl(\'${Area}\',AREA_ID) and ros.DATE_TIME BETWEEN \'${start}\' AND \'${start2}\' AND ${if(len(EQP)==0,\"1=1\",\"and e.EQUIP_ID in (\'\"+EQP+\"\')\")} 您是说这样嘛,但是查询的时候说数据集及配置错误
    2022-03-14 10:53 
  • 让过去 让过去 回复 rmHJPhsS(提问者) 你这个SQL,把IF条件前面的AND没删掉,你这个查不出来的问题,应该是楼下说的
    2022-03-14 10:55 
  • 让过去 让过去 回复 rmHJPhsS(提问者) SQL按你自己写的也行
    2022-03-14 10:56 
  • rmHJPhsS rmHJPhsS(提问者) 回复 让过去 if前面的and删掉了,可以多查了,但还是不能为空全查
    2022-03-14 11:02 
  • 让过去 让过去 回复 rmHJPhsS(提问者) 把1=1删掉
    2022-03-14 11:04 
最佳回答
0
snrtuemcLv8专家互助
发布于2022-3-14 10:49

看你的sql没有问题,看看那下拉复选款的分隔符设置了

image.png

  • rmHJPhsS rmHJPhsS(提问者) 设置了的
    2022-03-14 10:54 
  • snrtuemc snrtuemc 回复 rmHJPhsS(提问者) 设置了,按照你的语句不选查不出全部吗
    2022-03-14 10:58 
  • rmHJPhsS rmHJPhsS(提问者) 回复 snrtuemc
    2022-03-14 11:03 
  • snrtuemc snrtuemc 回复 rmHJPhsS(提问者) 额,看sql没问题,设置了分隔符也对的,检查分隔符输入发状态,要英文状态,可以试试重启设计器后再试试,或者升级jar包版本,还不行,估计需要咨询帆软技术人员,我看了都是没问题的
    2022-03-14 11:06 
  • CD20160914 CD20160914 回复 snrtuemc 传一下模板吧。或者加QQ看一下:3085921773
    2022-03-14 11:26 
最佳回答
0
助人为乐Lv4中级互助
发布于2022-3-14 10:49(编辑于 2022-3-14 10:52)

你这里缺少表达式的原因是前面多了一个and image.png   用我这个。前面不用and直接放在上一个条件后面。数字,汉字通用的。 1=1  一般是where 1=1 这样用的,其他地方用我后面这个的话不需要1-1 直接跟在后面  ${if(参数名称 = "","","and  end字段名称 in('" + replace(参数名称,",","','")+ "')")}image.png

  • rmHJPhsS rmHJPhsS(提问者) 你好,第一个方法把and去掉可以多查,但是不能为空全查;第二个方法也是
    2022-03-14 11:07 
  • 助人为乐 助人为乐 回复 rmHJPhsS(提问者) ${if(参数名称 = \"\",\"\",\"and 字段名称 in(\'\" + replace(参数名称,\",\",\"\',\'\")+ \"\')\")} 这个就是不选就是全查。然后选了多少就是查对应的。如果你结果不是这样,可以看一下你传参是什么看一下报错。
    2022-03-14 11:29 
最佳回答
0
吃肉不长肉Lv6见习互助
发布于2022-3-14 10:50

image.png

${if(len(EQP)==0,"","AND e.EQUIP_ID IN('"+EQP+"')")}

  • rmHJPhsS rmHJPhsS(提问者) 一样的,不能为空全查
    2022-03-14 11:03 
  • 吃肉不长肉 吃肉不长肉 回复 rmHJPhsS(提问者) 不会啊,这个语句是参数为空就不生效,就相当查全部啊
    2022-03-14 11:34 
  • 6关注人数
  • 660浏览人数
  • 最后回答于:2022-3-14 10:52
    请选择关闭问题的原因
    确定 取消
    返回顶部