界面显示报错

调取数据表中所有数据(共1200行),其中三列内容分别设置为3个参数,界面参数设置为多选,参数全部勾选查询时报错,报错类型为缺失右括号,但是参数单选时没有报错,各位大拿,辛苦指教

FineReport 爱喝咖啡的番薯 发布于 2022-9-2 13:51
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
爱喝咖啡的番薯Lv2见习互助
发布于2022-9-2 14:33

问题解决了,我的数据表中某个作为参数的列里面的内容有单引号这种特殊字符

最佳回答
1
weibwLv7高级互助
发布于2022-9-2 13:52(编辑于 2022-9-2 14:05)

看一下你的分隔符是不是这样的image.png

你把你SQL截图看一下,多选好多人都忘记设置分隔符

你得这么写

where 1=1

${if(len(参数1)=0,"","and 表字段 in('"+ 参数1+ "')")}

${if(len(参数2)=0,"","and 表字段 in('"+ 参数2+ "')")}

  • 爱喝咖啡的番薯 爱喝咖啡的番薯(提问者) 是这样的
    2022-09-02 13:57 
  • weibw weibw 回复 爱喝咖啡的番薯(提问者) 你在你问题里补充一下你的SQL
    2022-09-02 13:58 
  • weibw weibw 回复 爱喝咖啡的番薯(提问者) 答案已修改,可参考
    2022-09-02 14:05 
  • 爱喝咖啡的番薯 爱喝咖啡的番薯(提问者) 回复 weibw SQL非常简单,就是Select * from 表名 where 列名1 in (\\\'${参数1}\\\') and 列名2 in (\\\'${参数2}\\\')and 列名3 in (\\\'${参数3}\\\')
    2022-09-02 14:06 
  • weibw weibw 回复 爱喝咖啡的番薯(提问者) 参考我最新修改后的答案,你的复选参数,在用in的时候需要前后加上\'单引号的。因为你的分割符是\',\',所以要拼接成完整的字符串,前后都需要加上\'
    2022-09-02 14:18 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-2 13:52(编辑于 2022-9-2 14:20)

你的sql里面要用in  同时要设置分隔符号

${if(len(参数名称)=0,"","and 表中的字段 in('"+ 参数名称 + "')")}

image.png

image.png

最佳回答
0
congerLv6高级互助
发布于2022-9-2 13:52

看一下SQL,估计是拼接的时候出错了

  • 爱喝咖啡的番薯 爱喝咖啡的番薯(提问者) SQL非常简单,就是Select * from 表名 where 列名1 in (\'${参数1}\') and 列名2 in (\'${参数2}\')and 列名3 in (\'${参数3}\')
    2022-09-02 13:59 
  • conger conger 回复 爱喝咖啡的番薯(提问者) 各位大佬都回答了
    2022-09-02 14:28 
  • 爱喝咖啡的番薯 爱喝咖啡的番薯(提问者) 问题解决了,我的数据表中某个作为参数的列里面的内容有单引号这种特殊字符
    2022-09-02 14:32 
最佳回答
0
给我一瓶乳酸菌Lv4见习互助
发布于2022-9-2 14:26(编辑于 2022-9-2 14:32)

不使用转义字符,改成这样试试

Select * from 表名 where 列名1 in "('"+${参数1}+"')" and 列名2 in "('"+${参数2}+"')" and 列名3 in "('"+${参数3}+"')"

另外分割符设置再看一下,是不是用中文符号设置了,切换成英文再试一下,你这多选出错,单选没错,大概率还是你这个分隔符有问题

  • weibw weibw 转义不是他自己写的,是帆软评论功能的bug,会自动转义,很麻烦
    2022-09-02 14:31 
  • 3关注人数
  • 308浏览人数
  • 最后回答于:2022-9-2 14:33
    请选择关闭问题的原因
    确定 取消
    返回顶部