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.创建一个多选的下拉控件,设置好数据字典以及控件名。
2.在高级中,将返回字符串进行勾选。同时分割符改成’,’的格式(注意是英文格式)。
注:如果需要拼接的条件字段类型不是varchar,则分割符不用变保持原样的,即可。
3.在你的数据来源中编写对应if语句,完成动态语句拼接。
//实现in 语句,这里还是要格外注意下单引号的拼接位置。//注:如果需要拼接的条件字段类型不是varchar ,则需要去掉这里的单引号${if(len(BG)==0,"","and t.rbc1 in(' "+BG+" ')")}
报表单元格中的if写法
比如现在有这样的需求,客户在报表中除了数据,还需要知道这个报表是根据哪些筛选条件查询出来的(甲查询导出后,可能会传阅给乙看,所以展示筛选条件也是有必要的)。
1.也是先创建你的对应下拉列表,同时设置好控件名,这里不在展示。
2.点击到你要插入筛选条件内容的单元格。在点击上方插入公式的按钮。
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