if语句实现动态sql
语法格式为:
${ if( 判断条件,"true执行语句","false执行语句")}
//1.判断是否为空,为空情况下拼接一个and条件
//注:BG 是我下拉列表的控件名。这里一定要注意拼接的两个单引号的位置。
${if( len(BG)==0 , "" , " and t.rbc1 = ' "+BG+" ' ")}
//2.判断是否为某个值。
${if( unit=='a' , " and t.rbc1 is null " , " and t.rbc1 is not null ")}
//3.多个条件同时判断,和java语法一样使用&&或者||连接即可。
//我这里的逻辑是满足条件就以千作为单位,不满足则以个位作为单位。
${if(unit=='aa' || unit=='bb' ," round( sum(t.quantity)/1000,2) qty, "," sum(t.quantity) qty , ")}
//4.要是你的下拉列表或者文本框以及其他控件设置的是必填项。那么就可以写的更加简单。
//这里就不需要if判断了直接等于该值值即可。
and t.rbc1 = ${BG}
多选下拉框实现动态语句
1.创建一个多选的下拉控件,设置好数据字典以及控件名。
![](https://img-blog.csdnimg.cn/83050c549c1b453e846dbcf0b3c20ce2.png)
2.在高级中,将返回字符串进行勾选。同时分割符改成','的格式(注意是英文格式)。
注:如果需要拼接的条件字段类型不是varchar,则分割符不用变保持原样的,即可。
![](https://img-blog.csdnimg.cn/df4e65e89dec44f38acd6bb6039b558b.png)
3.在你的数据来源中编写对应if语句,完成动态语句拼接。
![](https://img-blog.csdnimg.cn/862e5262335c4047a6cdde785749da9b.png)
//实现in 语句,这里还是要格外注意下单引号的拼接位置。
//注:如果需要拼接的条件字段类型不是varchar ,则需要去掉这里的单引号
${if(len(BG)==0,""," and t.rbc1 in( ' "+BG+" ')")}
报表单元格中的if写法
比如现在有这样的需求,客户在报表中除了数据,还需要知道这个报表是根据哪些筛选条件查询出来的(甲查询导出后,可能会传阅给乙看,所以展示筛选条件也是有必要的)。
1.也是先创建你的对应下拉列表,同时设置好控件名,这里不在展示。
2.点击到你要插入筛选条件内容的单元格。在点击上方插入公式的按钮。
![](https://img-blog.csdnimg.cn/2bd83491af50418faf601b63fa00aed5.png)
![](https://img-blog.csdnimg.cn/f370578e02c148d5a2b326de08709d13.png)
3.编写if 语句。
注:这里需要注意下,单元格中引入控件值,不在是${控件名}。而是直接$控件名。
//这里我直接把代码贴出,大家根据自己的格式修改即可。$后面的时控件名。
"筛选条件\n"+if(len($BG)==0,"","BG:'"+$BG+"';\t\t")
+if(len($rbc)==0,"","RBC:'"+$rbc+"';\t\t")
+if(len($comments)==0,"","业务单元:'"+$comments+"';\t\t")
4.效果
快速复制模板数据集
也就是复制下面这块内容了,我在开发时就遇到了这种情况。上面的控件还好可以直接复制。但是**模板数据集**帆软本身并没有提供复制方法。如果有小伙伴遇到下面这个需求可以参考链接中的文章。快速复制模板数据集。
帆软报表 快速复用数据集,避免重复劳动 - 走看看 (zoukankan.com)http://t.zoukankan.com/xiaobaidejiucuoben-p-14945764.html
版权归原作者 Jiejkj 所有, 如有侵权,请联系我们删除。