帆软中if的用法
  1. 封装大类若选了DFNX,封装类型下拉框有对应的数据,但是客户类型下拉框下要求无数据

  2. 封装大类选了除DFNX外,其他大类,封装类型和客户类型都有对应的数据,若再选了封装类型,则客户类型下无数据,若选客户类型,则封装类型下无数据。

求大神指导,目前1已实现。J2.png

CHR_WIP.cpt


FineReport 用户41278693 发布于 2020-7-13 08:27
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
用户41278693Lv3见习互助
发布于2020-7-14 09:10

在客户类型中这样设置,

${if(sort=='DFNX',"AND CUSTOM_GROUP ='ALL'","AND CUSTOM_GROUP = 'AUTO'")}

  AND '${pkgtype}'  is null 

,解决后的模板已上传。

CHR_WIP.cpt


最佳回答
0
孤陌Lv6资深互助
发布于2020-7-13 08:28

不就是参数联动吗? 有没有数据  是看你数据库的问题啊    帮助文档搜下拉框 参数联动 

  • 用户41278693 用户41278693(提问者) 我想用IF函数实现,目前主要是第2点还没实现。
    2020-07-13 08:38 
  • 孤陌 孤陌 回复 用户41278693(提问者) 帮助文档搜填报联动 参考里面的公式方法 为什么要用IF判断??我想不明白 自己好好看看 我说的文档把
    2020-07-13 08:45 
  • 用户41278693 用户41278693(提问者) 回复 孤陌 因为我的3个下拉是3个数据集,是3个不一样的表
    2020-07-13 08:53 
  • 孤陌 孤陌 回复 用户41278693(提问者) 一样可以啊 3个数据集 肯定有关联字段 你真的没有好好看看下拉框参数联动
    2020-07-13 09:16 
  • SYF1764811194 SYF1764811194 回复 用户41278693(提问者) 三个数据集 一般都是ID的相互关联 你可以查询一下数据库 看一下关系 如果没有联系 那就代表你的数据集的选择问题 你也可以在数据库中添加相互的关系
    2020-07-13 09:49 
最佳回答
0
冰泉冷涩Lv6初级互助
发布于2020-7-13 08:56

这个应该不是用if函数去做,if函数可以用在单元格数据的过滤中实现对数据的筛选。

我觉得最好在数据库查询中实现。按照参数大类($sort)的值写sql(where pkgsort=$'sort'),从这个数据库抽取数据作为封装类型的数据源。这样就实现了控件之间的联动。

关于下拉框参数联动希望这个能帮到你:https://help.finereport.com/doc-view-1284.html

但是,你要要求有没有数一般由数据库里存储的内容决定,比如一条记录中封装大类为DFN,封装类型为XXX(你的pkgtypy内置数据集是空的),那么客户类型那一列就是空的。


如果一定要实现的话,我觉得还有个办法,就是直接用JS让控件不可用,那也选不了数据了。

可以看一下这个https://help.finereport.com/doc-view-1195.html



  • 用户41278693 用户41278693(提问者) 我现在主要是需要实现,如果封装大类选了不是DFNX的其他数,那我的封装类型和客户类型下都要有数据,这时,再选封装类型,若选了封装类型,那我客户类型下无数据,若选了客户类型,封装类型下无数据。我是用IF这样写的SELECT custom_group FROM rpt_dim_custom_group where 1=1 and 1=1 ${if(sort==\'DFNX\',\"AND CUSTOM_GROUP =\'ALL\'\",\"AND CUSTOM_GROUP = \'AUTO\'\")} and 1=1 ${if(and(len(sort)<>0,sort<>\'DFNX\'),if(len(customer)<>0,\"AND pkgType =\'ALL\'\",\"AND customer=\'ALL\'\"),\"\")} 第2个AND 不能实现,求大神帮我看一下哪儿有问题呢?
    2020-07-13 09:03 
最佳回答
0
LSQ000Lv5中级互助
发布于2020-7-13 09:23(编辑于 2020-7-13 09:25)

SELECT custom_group FROM rpt_dim_custom_group 

where 1=1 

${if(sort=='DFNX',"AND CUSTOM_GROUP ='ALL'","AND CUSTOM_GROUP = 'AUTO'")} 

${if(len(sort)!=0 && sort!='DFNX',if(len(customer)!=0,"AND pkgType ='ALL'","AND customer='ALL'"),"")} 


  • 用户41278693 用户41278693(提问者) 这样改了之后,选了封装大类后,客户类型就没有数据了。我这儿需要的是选了封装大类后,若选了封装类型,那么我的客户类型下没得数据,若选了客户类型,那我的封装类型下无数据
    2020-07-13 10:39 
  • LSQ000 LSQ000 回复 用户41278693(提问者) 我不知道你各个字段代表什么意思,封装大类、客户类型、封装类型都是哪几个字段,客户类型、封装类型没有数据的查询条件都分别对应什么查询条件,这些你要列出来才能改
    2020-07-13 10:53 
  • LSQ000 LSQ000 回复 用户41278693(提问者) 你这里选了封装大类后,若选了封装类型,那么我的客户类型下没得数据,若选了客户类型,那我的封装类型下无数据说的是几个参数框的效果吧,那当封装大类没有选择客户类型、封装类型又是什么情况呢
    2020-07-13 11:10 
  • 用户41278693 用户41278693(提问者) 回复 LSQ000 封装类型的表里面有个字段pkg_sort就是封装大类。但是客户类型是单独的一张表,跟封装大类和封装类型都没得关联。数据就是这样的。
    2020-07-13 11:14 
  • LSQ000 LSQ000 回复 用户41278693(提问者) 封装类型sql,当封装大类选了DFNX,封装类型sql不用写其他条件,当封装大类选了DFNX以外的(或者为空)时,当客户类型有值,则sql拼接 and 1=2即封装类型将查不到数据,当客户类型没有值时,则不加查询条件查询所有数据 where 1=1 ${if(sort==\'DFNX\',\"\",if(len(customer)==0,\"\",\"and 1=2\"))} 客户类型:sql where 1=1 ${if(sort==\'DFNX\',\"and 1=2\",if(len(pkgType)==0,\"\",\"and 1=2\"))} 这里还要明确当封装大类没有选择时,客户类型、封装类型对应什么情况,我这里是当封装大类没有选择时是按照封装大类不选DFNX的情况来写的
    2020-07-13 11:28 
  • 3关注人数
  • 6392浏览人数
  • 最后回答于:2020-7-14 09:10
    请选择关闭问题的原因
    确定 取消
    返回顶部