0


帆软报表中if语句写法以及多选下拉框的实现

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

标签: sql 数据库 java

本文转载自: https://blog.csdn.net/Jiejkj/article/details/128261926
版权归原作者 Jiejkj 所有, 如有侵权,请联系我们删除。

“帆软报表中if语句写法以及多选下拉框的实现”的评论:

还没有评论