JS中嵌套SQL函数,要为空时查出全部

这个功能在以前的问答中有人提到了,但是跟着写后发现只能查出选参数的时候,并不能完成空查全部的操作,代码如下:

var sql="sql(\"连接名\", \"select count(字段1) from 表名 where 1=1 \"+if(len("+a+")=0,\"\",\" and 字段2='"+a+"'\"), 1, 1)" ;

var num = FR.remoteEvaluate(sql);

alert(num);

有大佬可以帮忙看看要怎么实现吗?-- 15:32更新,添加了一个模板,这个模板的需求如下:在按钮控件中添加了点击事件,选择了下拉框的销售员后,点击按钮应该要返回过滤了销售员之后的总条数,如果下拉框为空,则返回全部条数

JS嵌套SQL函数.zip

。目前可以获取到参数,但是嵌套的SQL函数无法完成想要的效果。

FineReport 奇犽呀呀 发布于 2023-11-9 14:56 (编辑于 2023-11-9 15:36)
1min目标场景问卷 立即参与
回答问题
悬赏:5 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
GGGGGGGGGLv5初级互助
发布于2023-11-9 15:47(编辑于 2023-11-9 15:48)

用js来判断是否加上条件筛选,如下

var query = "";

if(a&&a.length>0){

    query = "and 字段2='"+a+"'";

}

var sql="sql(\"连接名\", \"select count(字段1) from 表名 where 1=1 "+query+"\", 1, 1)"  ;

var num = FR.remoteEvaluate(sql);

最佳回答
0
用户k6280494Lv6资深互助
发布于2023-11-9 14:59(编辑于 2023-11-9 15:08)

SQL("FRDemo1","select count(1) num from 销量 where 1=1" + if(len($a)=0,""," and id =1"),1,1)

  • 奇犽呀呀 奇犽呀呀(提问者) 请问下您这句的id = 1是什么意思呢,可以理解为a不为空则返回id=1吧,那写成id = $a这样可以吗
    2023-11-09 15:17 
  • 用户k6280494 用户k6280494 回复 奇犽呀呀(提问者) 我举例的,老铁
    2023-11-09 15:24 
  • 用户k6280494 用户k6280494 回复 奇犽呀呀(提问者) 你改成你的就行啊
    2023-11-09 15:24 
  • 奇犽呀呀 奇犽呀呀(提问者) 回复 用户k6280494 试了下不太行诶,好像在JS中需要转义,我更新了问题,您可以看下模板吗
    2023-11-09 15:36 
  • 用户k6280494 用户k6280494 回复 奇犽呀呀(提问者) 我也测试不了啊
    2023-11-09 15:42 
最佳回答
0
ID1208Lv6高级互助
发布于2023-11-9 15:08(编辑于 2023-11-9 15:09)

这个应该在外面判断,参数为空,取整列,否则取某一个

=if(len($参数)=0,sql("FRDemo","SELECT * FROM 表名",1),sql("FRDemo","SELECT * FROM STSCORE where CLASSNO = '"+$参数名+"' ",1,1))

  • 奇犽呀呀 奇犽呀呀(提问者) 您的方法应该是可行的,但它一共有20多个参数,这样写起来的话应该会很麻烦吧
    2023-11-09 15:13 
最佳回答
0
JL98Lv6中级互助
发布于2023-11-9 15:08(编辑于 2023-11-9 15:15)

image.png

这个1,1代表查第一列第一行

---------------------------------------------------------------------------------------------------------

image.png

行序号可以不写,列序号必须写,所以没有办法直接查*数据

-------------------------------------------------------------------------------------------

image.png

  • 奇犽呀呀 奇犽呀呀(提问者) 是的,是我表达不充分,您看这个语句是count(字段1),只会有第一列第一行。where后面的参数为空查全部的情况时,和参数不为空查出来的总数是不一样的。
    2023-11-09 15:11 
  • JL98 JL98 回复 奇犽呀呀(提问者) 正常是这样写的:SELECT * FROM 订单 WHERE 1=1 ${if(len(area) == 0,\"\",\"and 货主地区 = \'\" + area + \"\'\")} ------------------------------------------------------------------------------- 你少了$
    2023-11-09 15:14 
  • 奇犽呀呀 奇犽呀呀(提问者) 回复 JL98 好像不太行,因为它是在js中的
    2023-11-09 15:37 
  • 5关注人数
  • 288浏览人数
  • 最后回答于:2023-11-9 15:48
    请选择关闭问题的原因
    确定 取消
    返回顶部