关于java报表工具FineReport常用函数的用法及示例,请点击。http://www.111cn.net/jsp/Jsp-Servlet/83901.htm
(一)
1、address pool is full:
含义:地址池满,连接数超过并发数上限。
解决办法:
若在FineReport的连接池属性的设置中,已将最大连接数设置得过大,还出现如上的报错,此时通常就是数据库进程(processes)达到上限导致的,可增大数据库中的连接数目来解决此问题。如下在数据库中修改最大连接数:
Select count(*)from v$process查看当前的连接数
Select valuefrom v$parameter where name='processes'查看数据库允许的最大连接数
Alter system setprocesses =300 scope = spfile;修改最大连接数
重启数据库,再查询最大连接数,数字改变就表示已修改成功。
说明:当客户释放数据库连接时,先判定该连接的引用次数是否已超过规定值,假如超过就删除该连接,并判定当前连接池内总的连接数是否小于minConn(最小连接数),若小于就将连接池布满;假如没超过就将该连接标记为开放状态,可供再次复用。可看出正是这套策略保证了数据库连接的有效复用,避免频繁地建立、释放连接所带来的系统资源开销。
2、使用了未注册的功能:
含义:
未注册的版本是可以试用所有功能的。注册的lic是勾选过功能点的,如果制作的模板使用了未注册的功能就会报这个错误。一般容易分辨,有的客户可能禁掉报错界面,这样测试是好的,一放到服务器上就出不来,没有报错界面就不太容易发现了。
解决办法:在已注册购买的正式环境中,如果没有购买某些功能,则该功能是不可用的。
若您想知道您购买的版本中有什么功能,可通过打开Web服务器,然后在浏览器中输入:http://localhost:8075/WebReport/ReportServer?op=fs进入FR系统界面,点击管理系统>注册信息>功能列表就可以看到此版本支持哪些功能,如下图:
3、提示注册:
含义:使用了未注册版本。
解决办法:注册常见问题处理方法:http://www.finereporthelp.com/help/9/4.html
4、session timed out:
含义:session超时。
解决办法:设置session粘滞,通过配置文件的配置,会在集群的服务器间建立联系,当服务器收到请求,发现这个请求的会话不是自己产生的,那么它会根据请求中的信息,判断出这个会话是由哪台服务器产生。接着它会将这个请求通过内网转发给相应的那台服务器去处理。这样相当于就实现了J2EE集群的会话粘滞的功能。具体操作可参数文档:服务器集群配置步骤。
(二)
1、没有返回数据集:
在存储过程中的操作语句之前加上set nocount on 或者在数据集exec调用存储过程的前面加上这句。当SET NOCOUNT 为 ON 时,不返回计数(表示受 Transact-SQL 语句影响的行数)。当 SET NOCOUNT 为 OFF 时,返回计数。如果存储过程中包含的一些语句并不返回许多实际的数据,则该设置由于大量减少了网络流量,因此可显著提高性能。
2、模板文件损坏,或者打开模板没有反应:
FineReport的cpt模板由设计器做出源文件是一组组的标签括起来的语句。像HTML的结构那样,可以用文本编辑器打开。有些客户的模板可能做的比较BT,或者高低版本乱捣鼓,或者正操作着出现什么DT的情况导致模板不完整。一般报错会告诉出错的位置。
3、找不到模板:
找不到模板可能的原因看看是不是URL的问题,直接在模板中写中文的话,有些浏览器是会自动转码的(记得chrome、搜狗好像是),有些不会,比如IE。
4、java heapspace、stack overflow:
这个问度娘。常见的原因是模板做的很复杂,用了上百字段,上百行的sql语句,各种嵌套,尤其要注意有没有死循环。也有可能是服务器端的问题,比如tomcat最大内存太小了用了默认的64M。
5、数据集定义中有下拉复选框参数出问题:
下拉复选框控件返回值默认情况下是数组,参数取到的字符串是不带引号的(所以在数据集定义的sql语句中调用字符串类型的参数的话要手动加上单引号才行)。多个值用in,sql的in语句参数是字符串数组,每个都要求带单引号。所以要转化下,把控件的返回值改成字符串,间隔符用','。
6、本地预览的效果和服务器上的效果不一样:
首先检查jar包等是不是有问题。也有可能是嵌入平台后出现的问题。
7、平台管理忘了密码或者登不进:
报表平台管理只有一个账号,用户名和密码放在web-inf/resources/privilege.xml中。删掉即可重置。
8、图表中文乱码(方框):
这个Linux环境下装了oracle后容易出现这样的情况,方框是缺少中文字体的缘故(常见英文字体各种环境应该都有的)。安装对应的中文字体即可解决。
大块头的数据库搞坏字体环境并不少见,上次在win7里面装domino,好多软件的字体都被搞了,重装了系统的中文字体重启了计算机才恢复正常。
9、数据集预览的时候中文乱码(全问号):
乱码有几种情况:一种是方框,这个是字体的原因,画不出来汉字。一种是问号,这个是编码的问题,比如mysql数据库默认的编码是latin1,库里面没有中文对应的编码,就解析不了中文,解决方法是改变编码,比如把mysql的编码改成utf8或者gbk。这里要注意下的是,数据库有服务器编码,客户端编码,具体的某一个数据库和具体的表也有编码,只有在建数据库建表的时候选对了编码才行(没选的话就用的默认的)。
(三)
1、repeated column width is largerthan paper width:
这个看这段话应该是很好理解的。比如做的模板页面宽度只能放开5列,结果给6列做了重复和冻结,这个逻辑上肯定是说不过去的。
2、模板打不开,拒绝访问:
可能是win7操作系统对文件有权限。
3、安装设计器后无法预览报表(404报错):
在web.xml中增加servlet标签,具体的代码如下:
<servlet>
<servlet-name>ReportServer</servlet-name>
<servlet-class>com.fr.web.ReportServlet</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ReportServer</servlet-name>
<url-pattern>/ReportServer</url-pattern>
</servlet-mapping>
4、对象不支持此属性或者方法、XXX未定义:
统一页面编码和js的编码(在报表中即服务器编码),如页面编码为utf-8,而服务器编码为gbk,统一编码的方法有三种,下面我们来看一个具体的设置。将管理平台编码修改成与页面编码一致,打开FR管理平台,在管理系统>系统管理>常规属性下,修改服务器端编码为UTF-8即可,如下图:
5、日期比较导致出错:
我测试用的是自己搭的sqlserver2005.2012/01/01这种格式的日期和FR上的2012-01-01这种格式的是不能比较的,直接从数据库中读取的日期格式都比较长,不光是年月日,而且读不出来,不知道是为什么,预览时可以看到的。然后我加了个在条件属性中加了个left(todate($$$),10)转化了一下就解决了,todate转化成了-连接,前10是年月日。
6、由一个单元格扩展出来的行高不一致(填报预览):
但是分页预览却是没有问题的。最后发现时因为设置了数据字典。设置了数据字典的单元格其真实值一行显示不了的,就换行了,所以变宽了。难道是填报预览时计算需要空间的时候用的是真实值计算的?解决方法,注意点,拉宽点就好了。
7、自定义数据字典显示等号问题:
FineReport的像自定义数据字典这种地方,跟单元格还有提示定义框一定,如果不是‘=’号开头是当做字符串处理,‘=’号开头当做公式处理。所以单写一个等号就是空白的。显示等号的话用="="
8、一个单元格内容过多报错:
临时解决方法,直接合并多个单元格可以增加输入内容。