公式实现下拉框联动教程,引发的思考,求指导

①if(len($类型)=0,Embedded1.select(产品),eval("Embedded1.select(产品,产品类型='"+$类型+"')"))  正确

②if(len($类型)=0,Embedded1.select(产品),Embedded1.select(产品,产品类型=$类型))  正确

③if(len(类型)=0,Embedded1.select(产品),Embedded1.select(产品,产品类型=类型))  正确

④if(len($类型)=0,Embedded1.select(产品),Embedded1.select(产品,产品类型='"+$类型+"'))  不可以

⑤if(len(类型)=0,Embedded1.select(产品),eval("Embedded1.select(产品,产品类型='"+类型+"')")) 不可以

可见第一种写法必须加eval函数?为什么呢?引用变量的时候,参数前的$什么时候可以去掉?

FineReport FR小菜鸡 发布于 2021-4-16 11:37
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
shirokoLv6资深互助
发布于2021-4-16 13:45

首先你给的就是不对的,第5个可以image.png

image.png

公式实现下拉框参数联动.cpt

至于第四个为什么不行,引号根本对不上,单引号内部全部当成了字符串,相当于是要查找一个类型名是 "+$类型+"的产品,怎么可能有这个产品啊

  • FR小菜鸡 FR小菜鸡(提问者) 第5个公式,len(产品类型)=0,你不要在产品类型前加$,就不可以了
    2021-04-16 14:20 
  • FR小菜鸡 FR小菜鸡(提问者) SELECT * FROM 销售总额 where 1=1 ${if(len(销售总额)=0,\"\",\" and 销售总额 = \'\"+销售总额+\"\'\")} 为什么在查询数据集的时候,可以写=\"+销售总额+\"?
    2021-04-16 14:23 
  • shiroko shiroko 回复 FR小菜鸡(提问者) 你看清楚,双引号对应的是前面的
    2021-04-16 14:28 
  • shiroko shiroko 回复 FR小菜鸡(提问者) 双引号的内部,单引号被当成一般字符而不是引号,单引号的内部双引号被当成一般字符而不是引号
    2021-04-16 14:29 
  • shiroko shiroko 回复 FR小菜鸡(提问者) $参数名,最好就是加上,只是为了兼容有些人忘记写了,所以有一部分地方的公式,即使你没有$也会默认给你当参数用。。不要想太多了
    2021-04-16 14:33 
最佳回答
0
snrtuemcLv8专家互助
发布于2021-4-16 11:49(编辑于 2021-4-16 11:49)

先看eval函数,他是拼接字符串变成公式,如果不加$,会解析成字符,而直接在公式中,加不加$,都会被识别,但是公式中建议加上$;

相当于在公式中,使用eval会屏蔽这个效果

image.png

  • 3关注人数
  • 564浏览人数
  • 最后回答于:2021-4-16 13:45
    请选择关闭问题的原因
    确定 取消
    返回顶部