你的位置:首页 > Java教程

[Java教程]java报表工具FineReport使用中遇到的常见报错及解决办法(二)


 

这里写点抛砖引玉,希望大家能把自己整理的问题及解决方法晾出来,Mark一下,利人利己。

 

出现问题先搜一下文档上有没有,再看看度娘有没有,再看看论坛有没有。有报错要看日志。下面简单罗列下常见的问题,大多文档上都有提到的。

 

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.
8、图表中文乱码(方框):
这个Linux环境下装了oracle后容易出现这样的情况,方框是缺少中文字体的缘故(常见英文字体各种环境应该都有的)。安装对应的中文字体即可解决。
大块头的数据库搞坏字体环境并不少见,上次在win7里面装domino,好多软件的字体都被搞了,重装了系统的中文字体重启了计算机才恢复正常。

9、数据集预览的时候中文乱码(全问号):
乱码有几种情况:一种是方框,这个是字体的原因,画不出来汉字。一种是问号,这个是编码的问题,比如mysql数据库默认的编码是latin1,库里面没有中文对应的编码,就解析不了中文,解决方法是改变编码,比如把mysql的编码改成utf8或者gbk。这里要注意下的是,数据库有服务器编码,客户端编码,具体的某一个数据库和具体的表也有编码,只有在建数据库建表的时候选对了编码才行(没选的话就用的默认的)。