htmlname="report"reportFileName="tmp.raq"
width="2000"params="<%=jsp变量%>"
报表在编辑器中预览正常,但是在WEB发布时,从数据库中取出的汉字乱码
答:
检查web.xml文件中,对应datasource的数据编码配置是否正确。
设计器端报表预览可以出来数据,但是服务器端发布的时候数据出不来:
答:
先看应用服务器启动的时候,有没有报错,可能是授权证书没有拷贝到WEB-INF的目
录下;然后,再比较runqianReport.jar看是否一致;最后检查datasource的配置是否正确。
在页面发布的时候,把结果形成PDF文件,但会出现乱码。
语句如下:
ServerletOutputStreamoutputstream=response.getOutputStream();
response.setContentType("application/pdf");
report.exportToPDF(outputstream);
outputstream.flush();
outpurstream.close();
错在哪里?
答:
应该首先设置response.setContentType("application/pdf");然后再获得数据输出流。
常见错误信息
outofmemeryerror内存溢出
答:
该问题可能是由于web服务器javavm的内存设置太小,也可能是由于报表数据量过大;
解决办法:
1、java虚拟机的设置:
java-Xms128m-Xmx384m,根据实际机器的内存配置,灵活调
整
2、如果虚拟机设置后依旧出现内存溢出,可能是你的报表数据量过大,可以采取数据
集分页的办法或者数据集缓存的办法解决,如下图所示:
通过设置起始行和结
束行来控制数据集分
页,这两个属性可以通
过参数来传递
可以设置数据集
是否需要缓存,
此方法可以解决
内存溢出的问题
java.lang.ClassNotFoundException:
com.newatlanta.jturbo.driver.Driverat
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.jav
a:
1428)
答:
没有将数据库的jdbc包部署在classpath目录下。
单元格C4中有错误,表达式ds1.select(contractno)中数据集未产生,可能因为
未连接数据库
答:
编辑器没有连接数据库
java.sql.SQLException:
[JTurbo3.0.1JDBC2.1Driver]:
Parameter#2has
notbeenset
答:
sql语句的定义有误,sql语句里定义的问号个数比参数tab页中定义的参数表达式的条
数多
数据集ds1的sql异常:
Line1:
Incorrectsyntaxnear'contract'.
答:
类似这样的错误,往往是sql语句的语法出现了错误,请检查sql语句。
[JTurbo3.0.1JDBC2.1Driver]:
CommunicationLinkFailure.Nobuffer
spaceavailable(maximumconnectionsreached?
):
JVM_Bind
答:
sql语句的定义有误,sql语句里定义的问号个数比参数tab页中定义的参数表达式的条
数少
org.apache.jasper.JasperException:
com/runqian/report/view/DataServlet
at
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:
248),
后台没有任何错误信息,所有jsp网页不能显示,但是html网页可以显示;或者
org.apache.jasper.JasperException:
/index.jsp(4,0)Unabletoloadclasshtml
答:
检查WEB-INF目录名是否写成了小写,或者runqianReport.jar包是否正确的部署在了
web应用的classpath目录下。
Therequestedresource(/web/report.jsp)isnotavailable.
答:
此时的现象:
所有的jsp网页、html网页、应用根目录都无法访问,应用没有正确启动
原因:
应用没有正确部署或者runqianReport.tld文件没有正确部署
org.apache.jasper.JasperException:
/defaultArg.jsp(22,0)Unabletoloadtag
handlerclass"com.runqian.report.tag.HtmlTag"fortag"report:
html"
答:
检查web应用下的classpath目录,看看是否所有的jar包都已经放置在了classpath目录
下
java.lang.NullPointerExceptionat
com.runqian.report.view.ReportCalculator.calc(ReportCalculator.java:
74)at
com.runqian.report.tag.HtmlTag.doStartTag(HtmlTag.java:
195)at
org.apache.jsp.defaultArg_jsp._jspService(defaultArg_jsp.java:
106)at
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:
94)at
javax.servlet.http.HttpServlet.service(HttpServlet.java:
802)
答:
没找到License文件,请把xrq_license.dat文件放到WEB-INF目录中!
java.lang.NullPointerExceptionat
com.runqian.report.usermodel.ReportDataSetConfigs.calcDataSet(ReportDataSetC
onfigs.java:
99)at
com.runqian.report.engine.CalcRpt.calcRpt(CalcRpt.java:
24)at
com.runqian.report.usermodel.Engine.calc(Engine.java:
144)at
com.runqian.report.ide.ReportEditor._$5157(ReportEditor.java:
551)
答:
请检查报表模板中自定义的数据集用到的类,看看是否正确的放在了classpath目录下
java.lang.NullPointerExceptionat
com.runqian.report.view.excel.ExcelReport._$16606(ExcelReport.java:
205)
at
com.runqian.report.view.excel.ExcelReport.createWorkbook(ExcelReport.java:
67)
atcom.runqian.report.view.excel.ExcelReport.(ExcelReport.java:
40)
atcom.runqian.report.view.excel.ExcelReport.(ExcelReport.java:
52)
atcom.runqian.report.ide.CellSetConverter._$50529(CellSetConverter.java:
42)
atcom.runqian.report.ide.CellSetConverter.convert(CellSetConverter.java:
76)
答:
因为该报表是从excel导入的,一些页面设置的默认值没有:
例如纸张大小、纸张方向
等,请设置一下这些值,点击保存即可。
在weblogic下发布时,如果更新了类,没有重起web服务,就会出现如下错误信息:
java.lang.NullPointerExceptionat
com.runqian.report.view.ReportCalculator.calc(ReportCalculator.java:
61)at
com.runqian.report.tag.HtmlTag.doStartTag(HtmlTag.java:
193)
答:
将web.xml里的reportFileHome配成绝对路径,就可以避免这一问题。
java.lang.ClassNotFoundException:
com.runqian.report.ide.ReportFrame
atStartReportEditor.loadClass(StartReportEditor.java:
187)at
java.lang.ClassLoader.loadClass(ClassLoader.java:
255)at
StartReportEditor.main(StartReportEditor.java:
262)
答:
润乾报表安装目录下,web/web-inf/lib目录下的runqianReport.jar包可能被破坏,请更
新此包。
报表编辑
编辑器运行时提示无效的授权文件
答:
jdk的版本低,换成jdk1.4.1及以上版本
编辑器里报表预览出现乱码什么原因
答:
请检查系统/数据源连接设置是否选择了正确的数据编码
我定义的自由式报表,为什么当出现多条记录时,不能成片重复
答:
把需要被重复的行的第一个单元格的左主格属性设成该记录的主动扩展格。
如下图所示:
上图中,c4单元格是记录的主动扩展格,因此如果希望从第五行到第十行都随着c4的扩展
而被复制,那么从第五行到第十行的第一个单元格(a5:
a10)的左主格属性都设成c4
当单元格中的数据过长,超出格子的宽度时,我该怎么办?
答:
可以为单元格设置自动换行属性
报表里合计的行应该是属于页尾区还是数据区?
答:
看你这个合计行是否需要被复制,是否需要每页显示;如果会随着主单元格的扩展而被
复制出很多合计行,例如分组报表里的组合计,那么应该放在数据区;如果只在最后合计,
但是每页显示,那么放在表尾区;如果只要最后一页显示,那么放在数据区;除了数据区,
其它区域都是每页重复显示
编辑器运行时,一启动就莫名其妙的关闭了,怎么办?
答:
此时往往是java环境或者编辑器的包存在问题,最好的解决办法是在dos命令行下,
执行“润乾报表.bat”文件,然后根据错误信息寻找解决办法
编辑器要求jdk1.4.1及以上版本,也可以先检查jdk的版本是否正确。
报表中,希望单元格中存的是编码,显示成中文,要如何做?
答:
通过定义单元格的显示值属性来实现,
做法一:
为显示值属性表达式定义一个map(list(exp1,exp2......),list(exp1,exp2,...)),第一个list
是真实值列表,第二个list是显示值列表
做法二:
从数据集中获得显示值,dsn.select_one(nameCol,@value=idCol),@value代表当前
单元格的真实值
做法三:
直接写入显示值,例如“中国”
报表中,我希望引用某个单元格的显示值,要如何做?
答:
可以采用disp函数,例如:
=disp(A1)+"——中国"
展现
你们导出XLS格式单元格怎么比显示的要大的多呢?
答:
因为微软的软件界面显示都有放大的效果,例如excel、word、看起来都比实际的大,
但是导出到pdf就是一样大,而且打印到纸上和excel、word是一样大的
网页上导出到excel文件时,是否分页页面报错
答:
runqianReport.jar包里缺少文件,更新最新的jar文件
以分页的方式导出到excel时,如何设置页面大小?
答:
在tag标签里设置属性,如下表所示:
width否报表分页宽度
整数,单位为px,负数
表示无穷大
报表设计
页面宽度
height否报表分页高度
整数,单位为px,负数
表示无穷大
报表设计
页面高度
excelUsePaperSize否
存为EXCEL时:
yes
按报表设计时的纸张
尺寸,no采用本TAG
标签中指定的width,
height值
yes或nono
导出到文本文件时,能否设置打印机控制码?
如何设置?
答:
可以。
先建一个printer.ini文件,文件格式如下图所示:
然后在报表编辑器中,点中报表首格,在右边的属性列表中,选择你要设置的打印机,如下
图所示:
编辑器中预览报表时,从数据库中取出的汉字乱码,如何解决?
答:
点击系统/数据源,选择您当前连接的数据源,点击配置,如下图所示:
查看您设置的数据编码是否正确,如果不正确,会导致数据乱码。
点击导出到excel后出现是否分页窗口,选择以后就什么都不出现了
答:
一般是poi包的版本不对,必须用润乾公司提供的poi包,因为润乾公司在poi包的基
础上做了一些修改
还有一种可能是java的classpath下有多个poi包,冲突了。
导出到pdf出现中文字符不对
答:
一般是webserver端的操作系统安装有问题,往往是英文的操作系统,相应的中文字符
集没安装。
此时往往出现网页预览的中文是对的,因为网页上用的是客户端操作系统的中文字符
集。
对于某些数据库,例如sqlsvr,其varchar和nvarchar字段,总有一种字段出来的
中文不对
答:
请详细阅读jdbc包的说明文档,例如对于sqlsvr数据库,可在url里这么配置:
jdbc:
JTurbo:
/