函数定义规则
FineReport报表已经提供了大量的自带函数,在正常情况下足够满足用户的报表制作需求,但是在一些特殊领域,可能需要一些特殊的函数,在这种情况下,Java报表工具提供了自定义函数机制,可以由用户根据业务需要自己来定义一些函数,但这些函数必须满足FineReport函数定义规则。
FineReport函数定义规则:Functionname(Para,Para,…),其中Functionname为函数名,Para为参数。
函数原理
在FineReport报表中,每一个函数都被定义成一个类,这个类必须要实现Function这个接口,在运算的时候首先通过函数名反射取得这个类,然后调用它的run(Object[] agrs)方法。下面以SUM这个函数为例。 阅读全文 »
主流Java报表工具之王者争夺战:功能大PK系列之动态参数
1.功能描述
动态参数是指给报表模板传递不同的参数值,以达到展示不同数据的效果。
支持程度: 阅读全文 »
1.功能描述
插入所谓的悬浮元素,就是在不影响其他的设置的情况下,可以在界面进行随意摆放的图表,文字,图形等。
支持程度:FineReport报表完全支持,润乾报表不支持 阅读全文 »
各位FineReport的Fans们,欢迎齐聚FineReport大家庭!小站初次开张,为迎新人、聚人气,现举办论坛第一届有奖活动,活动规则简单,奖品形式多样,欢迎各位捧场!
活动地址:http://bbs.finereport.com/thread-69-1-1.html
(迎新活动期间,积分金币大规模放送,且本次活动中金币兑换实体奖品后不损耗,可累计参加下次的活动奖品兑换,实惠多多哦亲~~~点击查看“金币的用途和获取途径”) 阅读全文 »
1.功能描述
在进行一些套打等需要设置背景图时,背景图的保存路径相当重要,这关系到模板在不同的PC机上进行浏览、打印,以及后期的模板维护和更改等。背景图直接保存于模板文件,就相当于word文件里面插入图片一样。这样不管文件在何时何地打开,图片都可以进行预览和编辑。
支持程度:FineReport报表背景图保存于模板文件中;润乾报表背景图通过URL连接,保存在系统路径中。 阅读全文 »
下面以java报表工具中一个简单的自定义函数例子来说明使用自定义函数的四个步骤。我们定义一个函数STRINGCAT,他的作用是把所有的参数以字符串的形式连接起来。
STRINGCAT函数使用规则为STRINGCAT(Para,Para,Para…….);
其中Para为该函数的参数,个数不限。 阅读全文 »
在使用java报表工具时如有一个参数查询语句:SELECT * FROM Stscore WHERE Stdno IN (${studentno})。实际情况中studenno可能是根据其他条件查询出来的结果列表,也许超过1000个学号,如最终为
SELECT * FROM Stscore WHERE Stdno IN (10001, 10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, ……,10989, 10990, 10991, 10992, 10993, 10994, 10995, 10996, 10997, 10998, 10999, 11000,11001)
直接执行上述语句,由于studentno参数的个数超过了1000个,数据库端将报ORA-01795的错误,如下图

http://www.finereport.com/forumimages/e440.png
如何解决该问题呢?此时,如果将studentno参数分割成多段,如以500为单位进行分割,将上述11001个参数值分为3部分,形成3条查询条件,便可避免该问题。
即变为SELECT * FROM Stscore WHERE Stdno IN (10001,10002,…,10500) or Stdno IN (10501,10502,…,11000) or Stdno IN (11001)
FineReport并没有实现该功能的内置函数,对于这种情况,我们可以自定义一个SubSection分组函数 该函数的使用规则为:SubSection(para)
参数para为字符串形式,该函数的作用即将字符串参数以500为单位进行分割,并返回分割后形成的数组。
完整代码如下:


http://www.finereport.com/forumimages/e441.png
http://www.finereport.com/forumimages/e442.png
编译自定义函数
将编译后的SubSection.class放到FineReport的安装目录WEB-INF下面的classes目录下,因为SubSection.java属于包com.fr.demo,所以SubSection.class需要放到classes\com\fr\demo目录下。
注册并使用自定义函数
注册好定义的函数后便可进行使用了,注册与使用方法在上一节简单的自定义函数中已经介绍过,在此就不详细描述了。由于实际获得的参数格式不定,可以根据具体情况在报表工具中调整java程序。