??xml version="1.0" encoding="utf-8" standalone="yes"?>
再用报表?/span>EXCELdq些囄Ӟ如果该囄字段拖入单元格后Q预览就看不到图片了?/span>EXCEL如何dq类囄|上有教E,q里不多说。如果你要用报表软gFineReport来展现这cd片该如何做呢Q?/span>
思\是采?/span>FineReport的自定义函数Q?/span>java?/span>jna调用本地?/span>WltRS.dllQ将数据?/span>OLE字段中的长二q制数据转ؓ.wlt文gQ再调用本地Ҏ?/span>.wlt文g转ؓ.bmp囄Q最l自定义函数q回囄?/span>FineReport中显C?/span>
1?/font>前提准备
本地库文?/span>WltRS.dll保存?/span>E:\bmp\WltRS.dllQ位|可变,?/span>ixu保证以自定义函数中的路径一_Q?/span>eclipse目中导?/span>FINEREPORT?/span>jar包?/span>
2?/font>实现自定义函?/span>
自定义一个函数类BinaryImage.javaQ该cȝ?/span>AbstractFunctionQ在run()Ҏ中?/span>java?/span>jna调用本地库文?/span>WltRS.dllQ最l返回图片。代码如下:
编译后?/span>BinaryImage.class?/span>WltRS.classҎ包名拯x表工E如报表安装目录下的WebReport\WEB-INF\classes\com\FineReport\function\文g夹下?/span>
3、用自定义函数
?/span>OLEcd字段的值显CZؓ囄。启动设计器Q点L务器>函数理器,新增自定义函?/span>BINARYIMAGEQ选择com.FineReport.function.BinaryImagec:
n份证d器写?/span>Access数据?/span>OLE型字D늚照片信息拖入单元|双击Q在数据?/strong>>高>自定?/span>昄中用自定义函数转换成图片:
数据表中需要新Z个字DdistrictQ该字段内容需要由另两个字Dcountry和city加上汉字拼接而成Q手动添加数据非帔R烦,q时候用FineReport报表工具的填报功能可以简单且快捷地实现字D|接ƈ回填x据库Q实现该字段内容的更新?/span>
下面看一?/span>Java报表工具FineReport实现q一效果的具体步骤?/span>
1. l定数据?/span>
?/span>报表表样中,A3单元格绑定country字段QB3单元格绑定city字段
C3单元格时对应district字段的,district字段由country字段和city字段拼接而成Q因而在C3单元g写入公式Q?/span>=”国家Q?#8221;+A3+”城市Q?#8221;+B3
2. 讄填报属?/span>
讄报表填报属性,使得每个单元格的D够回填至对应的数据表字段中,如下?/span>
3. 讄控g属?/span>
讄报表控g属性,方便修改单元格的|q进而实现各字段的更斎ͼq里?个单元格都设|ؓ文本控gQ如下图
4. 填报预览
点击报表设计器上?#8220;填报预览”按钮Q可以在览器中预览到C3单元格的值已l自动拼接了Q如下图
点击“提交”按钮Q弹出提交成功对话框Q表C更新的字段已经回填x据库?/span>
5. 查数据表中district字段
查看数据表,发现原先为空的district字段已经更新
出现问题先搜一下文档上有没有,再看看度娘有没有Q再看看论坛有没有。有报错要看日志Q?.5的日志在设计器的菜单栏有H口视图日志Q。下面简单罗列下常见的问题,大多文档上都有提到的?/span>
address pool is fullQ?/span>
地址池满Q连接数过q发C限?/span>
文档
使用了未注册的功能:
未注册的版本是可以试用所有功能的。注册的lic是勾选过功能点的Q如果制作的模板使用了未注册的功能就会报q个错误。一般容易分辨,有的客户可能掉报错界面Q这h试是好的Q一攑ֈ服务器上出不来Q没有报错界面就不太Ҏ发现了?/span>
文档
提示注册Q?/span>
注册常见问题处理ҎQhttp://www.finereporthelp.com/help/9/4.html
文档
session timed outQ?/span>
session时?/span>
文档
没有q回数据集:
在存储过E中的操作语句之前加上set nocount on 或者在数据集exec调用存储q程的前面加上这句?/span>
当SET NOCOUNT ?nbsp;ON Ӟ不返回计敎ͼ表示?nbsp;Transact-SQL 语句影响的行敎ͼ。当 SET NOCOUNT ?nbsp;OFF Ӟq回计数?/span>
如果存储q程中包含的一些语句ƈ不返回许多实际的数据Q则该设|由于大量减了|络量Q因此可显著提高性能?/span>
文档
模板文g损坏Q或者打开模板没有反应Q?/span>
FR的cpt模板p计器做出源文件是一l组的标{括h的语句。像HTML的结构那P可以用文本编辑器打开。有些客L模板可能做的比较BTQ或者高低版本ؕ捣鼓Q或者正操作着出现什么DT的情况导致模板不完整。一般报错会告诉出错的位|?55版本可以用bak文gq原下,7.0׃太好办,可以试填补部分语句主要是标{来抢救部分模板?/span>
找不到模板:
找不到模板可能的原因看看是不是URL的问题,直接在模板中写中文的话,有些览器是会自动{码的Q记得chrome、搜狗好像是Q,有些不会Q比如IE?/span>
文档
java heap space、stack overflowQ?/span>
q个问度娘。常见的原因是模板做的很复杂Q用了上癑֭D,上百行的sql语句Q各U嵌套,其要注意有没有d@环。也有可能是服务器端的问题,比如tomcat最大内存太了用了默认?4M?/span>
数据集定义中有下拉复选框参数出问题:
下拉复选框控gq回值默认情况下是数l,参数取到的字W串是不带引LQ所以在数据集定义的sql语句中调用字W串cd的参数的话要手动加上单引h行)。多个值用inQsql的in语句参数是字W串数组Q每个都要求带单引号。所以要转化下,把控件的q回值改成字W串Q间隔符?,'?/span>
文档
本地预览的效果和服务器上的效果不一P
首先查jar包等是不是有问题。也有可能是嵌入q_后出现的问题?/span>
文档
q_理忘了密码或者登不进Q?/span>
报表q_理只有一个̎P用户名和密码攑֜web-inf/resources/privilege.xml中?55密码没加密,7.0密码是加密的Q密码在<rootManagerPassword>标签中,把里面改?lt;![CDATA[___0022]]>密码是一?.用这个密码登q去再重新设|?/span>
图表中文qQ方框)Q?/span>
q个Linux环境下装了oracle后容易出现这L情况Q方框是~少中文字体的缘故(常见英文字体各种环境应该都有的)。安装对应的中文字体卛_解决?/span>
大块头的数据库搞坏字体环境ƈ不少见,上次在win7里面装dominoQ好多Y件的字体都被搞了Q重装了pȝ的中文字体重启了计算机才恢复正常?/span>
数据集预览的时候中文ؕ码(全问PQ?/span>
q有几U情况:一U是ҎQ这个是字体的原因,M出来汉字。一U是问号Q这个是~码的问题,比如mysql数据库默认的~码是latin1Q库里面没有中文对应的编码,p析不了中文,解决Ҏ是改变编码,比如把mysql的编码改成utf8或者gbk。这里要注意下的是,数据库有服务器编码,客户端编码,具体的某一个数据库和具体的表也有编码,只有在徏数据库徏表的时候选对了编码才行(没选的话就用的默认的)?/span>
repeated column width is larger than paper widthQ?/span>
q个看这D话应该是很好理解的。比如做的模杉K面宽度只能放开5列,l果l?列做了重复和ȝQ这个逻辑上肯定是说不q去的?/span>
文档
模板打不开Q拒l访问:
可能是win7操作pȝҎ件有权限?/span>
安装设计器后无法预览报表Q?04报错Q:
文档
对象不支持此属性或者方法、XXX未定义:
文档
THREE未定?
自己没碰到过没解册?/span>
日期比较D出错Q?/span>
我测试用的是自己搭的sqlserver2005.2012/01/01q种格式的日期和FR上的2012-01-01q种格式的是不能比较的,直接从数据库中读取的日期格式都比较长Q不光是q月日,而且M出来Q不知道是ؓ什么,预览时可以看到的。然后我加了个在条g属性中加了个left(todate($$$),10)转化了一下就解决了,todate转化成了-q接Q前10是年月日?/span>
׃个单元格扩展出来的行高不一_填报预览Q:
但是分页预览却是没有问题的。最后发现时因ؓ讄了数据字典。设|了数据字典的单元格其真实g行显CZ了的Q就换行了,所以变宽了。难道是填报预览时计需要空间的时候用的是真实D的Q解x法,注意点,拉宽点就好了?/span>
使用E序数据集出错:
654?55都有个问题是加蝲了有问题的class文g作ؓE序数据集,下次打不开了,655是设计面板单元格界面没有了?.0版本没这个问题?/span>
E序数据集class文g必须攑֜class com fr data目录下?nbsp;~译好了后的class名也是不能修改的?/span>
自定义数据字典显C等号问题:
FR的像自定义数据字典这U地方,跟单元格q有提示定义框一定,如果不是‘=’号开头是当做字符串处理,‘=’号开头当做公式处理。所以单写一个等号就是空白的。显C等L话用="="
一个单元格内容q多报错Q?/span>
临时解决ҎQ直接合q多个单元格可以增加输入内容?/span>
Oracle数据库厉行计划的相关知识是本文我们主要要介绍的内容,我们首先介绍了厉行计划的概念Q然后给Z两个厉行计划的实例进行说明,最后介l了Oracle优化器的形式以及厉行计划Ҏ们的用途,接下来就让我们一h了解一下这部分内容?/span>
QQ?/span>什么是厉行计划
所谓厉行计划,望文生义Q即便对一个查询Q务,做出一份怎样dlQ务的实计划。D个生存中的例子,我从珠v要去英国Q我能够抉择先去香港然后赯Q也能够先去北京赯Q可能去q州也能够。然而究竟怎样去英国划,也即便我的开支v码,q是一件划考究的事情。同样对于查询而言Q我们提交的SQL仅仅是描写出了我们的目标地是英国Q但至于怎么去,{闲我们的SQL中是未曾l出提醒消息的,是由数据库来定夺的?/span>
我们先容易的看一个厉行计划的比拟QSQL> set autotrace traceonly
厉行计划一Q?/span>
SQL> select count(*) from t;
COUNT(*)
----------
24815
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE
10 SORT (AGGREGATE)
21 TABLE Access (FULL) OF 'T'
厉行计划二:
SQL> select count(*) from t;
COUNT(*)
24815
Execution Plan
0 SELECT STATEMENT Optimizer=CHOOSE (Cost=26 Card=1)
10 SORT (AGGREGATE)
21 INDEX (FULL SCAN) OF 'T_INDEX' (NON-UNIQUE)(Cost=26 Card=28180)
q两个厉行计划中Q第一个表C求和是I越举行全表扫描来做的,把全副表中数据读入内存来逐条累加;W二个表CZ据表中烦引,把全副烦引读q内存来逐条累加Q而无d读表中的数据。然而这两种措施I竟哪种快呢?{闲来说可能二比一快,但也不是l对的。这是一个很Ҏ的例子演C厉行计划的差异。对于杂的SQL(表连接、嵌套子查询{?Q厉行计划可能几十种甚至上百U,然而究竟那U良好呢?我们事前q不懂得Q数据库本n也不懂得Q然而数据库会依据定然的法定可能普查消息(statistics)L择一个厉行计划,{闲来说抉择的是比拟优的Q但也有抉择失手的时候,q即便这ơ谈论的价值所在?/span>
QQ?/span>Oracle优化器Ş?/span>
Oracle优化器有两大c,Z法定的和Z代h的,在SQLPLUS中我们能够察看init文g中定义的~省的优化器形式?/span>
SQL> show parameters optimizer_mode NAME TYPEVALUE optimizer_mode string CHOOSE SQL>
q是Oracle8.1.7 企业版,我们能够看出Q默认安装后数据库优化器形式为CHOOSE,我们q能够设|ؓ RULE、FIRST_ROWS,ALL_ROWS。能够在init文g中对全副instance的所有会话设|,也能够独自对某个会话讄Q?/span>
SQL> ALTER SESSION SET optimizer_mode = RULE;
会话已改动?/span>
SQL> ALTER SESSION SET optimizer_mode = FIRST_ROWS;
会话已改动?/span>
SQL> ALTER SESSION SET optimizer_mode = ALL_ROWS;
会话已改动?/span>
Z法定的查询,数据库依据表和烦引等定义消息Q按照定然的法定来发生厉行计?Z代h的查询,数据库依据搜集的表和索引的数据的普查消息(I越analyze 号召可能利用dbms_stats包来搜集)归纳来定夺拨取一个数据库感受最优的厉行计划(切实上无d最?。RULE是基于法定的QCHOOSE表示万一查询的表存在搜集的普查消息则Z代h来厉?在CHOOSE形式下Oracle批准的是 FIRST_ROWS)Q否则基于法定来厉行。在Z代h的两U措施中QFIRST_ROWS指厉行计划批准v码资源尽快的归来局部收L客户端,对于排序分页|CU查询尤其实用,ALL_ROWS指以大局p资源L的措施归来收L客户端?/span> http://www.finereport.com/products/advantages
Z法定的Ş式下Q数据库的厉行计划等闲比拟安宁。但在基于代L形式下,我们才有更大的时机抉择最优的厉行计划。也׃Oracle的许多查询方面的个性定然在Z代h的Ş式下能力揭示出来Q因而我们等闲不抉择RULE(q且OracleL?nbsp;Oracle 10i版本数据库开始将不再扶持 RULE)。既然是Z代h的Ş式,也即便说厉行计划的抉择是依据表、烦引等定义和数据的普查消息来定夺的Q这个普查消息是依据 analyze 号召可能dbms_stats包来定期搜集的。率先存在着一U可能,即便׃搜集消息是一个很p资源和工夫的动作Q尤其当表数据量很大的时候,因ؓ搜集消息是对全副表数据D行重新的全面普查Q因而这是我们定然端庄琢的问题。我们只能在服务器安逸的时候定期的举行消息搜集。这解释我们在一D|期内Q普查消息可能和数据库本w的数据q不合乎;另外即便Oracle的普查数据本w也存在着不准局?实参看Oracle DOCUMENT)Q更重要的一个问题即便及时普查数据相Ҏl比拟准,然而Oracle的优化器的抉择也q不是始l是最优的计划。这也攀附于Oracle对不同厉行计划的代h的计法?我们{闲是无法懂得翔实的计算法定?。这好像我们定夺从香港还是从北京去英国,车票、机等切实hI竟是怎么核算出来的我们ƈ不懂得,可能说我们目前打听的h消息Q在我们乘R前往的时候,xh跟我们的核算曄发生了改变。所有的因素Q都L及我们的全副开支?/span>
QQ?/span>厉行计划安宁功能带给我们什?/span>
Oracle存在着厉行计划抉择失手的可能。这也是我们l常见的一些假象,例如L我的q程在测验数据库中跑的很好,但在产品数据库上即便跑的很差Q甚臛_者硬件条件比前者还好,q究竟是Z?g资源、普查消息、参数设|都可能对厉行计划发生L及。由于因素太多,我们LҎ来怀着一U莫名的生怕,我的产品数据库上U后I竟跑的好不?于是Oracle供给了一U安宁厉行计划的力气Q也即便把在验环境中的q行良好的厉行计划所发生的OUTLINESULC品数据库Q得厉行计划不会随着其他因素的改变而改变?/span>
那么OUTLINES是什么呢?先要推荐一个内容,Oracle供给了在SQL中利用HINTS来领g化器发生我们惌的厉行计划的力气。这在多表连接、杂查询中其用。HINTS的种c许多,能够讄优化器目?RULE、CHOOSE、FIRST_ROWS、ALL_ROWS)Q能够指定表q接的次序,能够指定利用哪个表的哪个索引{等Q能够对SQL举行许多_的扼制。穿这U措施发生我们想要的厉行计划的这些HINTS,Oracle能够存储q些HINTSQ我们称之ؓOUTLINES。穿STORE OUTLINES能够使得我们h后发生雷同厉行计划的力气,也即便我们h了安宁厉行计划的力气?/span>
q里想给Z个附带的解释即便Q切实上Q我们穿工具修改SQLQ例如利用SQL EXPERT修改后的SQLQ这些不但仅是加了HINTS而且文本都曾l发生了改变的SQLQ也能够存储OUTLINESQƈ可被利用到利用中。但q不是定然见效,我们定然验察看是否见效。但׃ql了讹谬的OUTLINES,数据库在厉行的时候,揖 智疏忽过去重新生成厉行计划而不会归来讹谬,因而我们才敢塌心的q么利用。当然在Oracle文档中ƈ未曾指明能够q么做,文档中只是解释,万一存在OUTLINES的同时又在SQL中加了HINTSQ则会利用OUTLINES而疏忽HINTS。这U功能在LECCO公布的产品中会利用q一功能Q这么能够将SQL EXPERT的修改SQL的力气和安宁厉行计划的力气联合v来,那么我们对不能改动源代码的利用h了相当壮大的SQL优化力气?/span>
可能我们会有疑问Q假定安宁了厉行计划Q那q搜集普查消息干?q是因ؓ几个起因构成的,率先Q目前的厉行计划对于未来发生了改变的数据未必即便M的,存在着目前的厉行计划不中意未来数据的改变后的效率,而新的普查消息的情Ş下所发生的厉行计划也q不是全副都U学的。那q个时候,我们能够批准新搜集的普查消息Q然而却Ҏ普查消息下不良的厉行计划批准Oracle供给的厉行计划安宁性这个力气安宁厉行计划,q么联合h我们能够发生心的高效的数据库运行环境?/span>
我们q必需x的一个东西,Oracle供给的dbms_stats包除非具有搜集普查消息的力气Q还h把数据库中普查消?statistics)export/import的力气,q具有只搜集普查消息而得普查消息不利用于数据库的力?把普查消息搜集到一个特定的表中而不是即刻见?Q在q个基础上我们就能够把普查消息export出来再importC个测验环境中Q再q行我们的利用,在测验环境中我们考察最新的普查消息会导致哪些厉行计划发生改?DB EXPERT的Plan Version Tracer是模仿不同环境ƈU极察看不同环境中厉行计划改变的工具)Q是变好了还是变差了。我们能够把变差的这一局部在验环境中利用hints可能利用工具(SQL EXPERT是在重写SQLq一领土现在最强有力的工具)发生良好的厉行计划的SQLQ利用这些SQL能够发生OUTLINES,然后在品数据库利用最新的普查消息的同时移植进q些OUTLINES?br />
Java报表软gQ?/span>
1Q在windows下找到系l用到的字体,q里以楷体D?/span>
·?/span>c盘的 windows文g夹的 Fonts文g多w面存放了windows中用到的所有字体,具体路径C:\WINDOWS\Fonts
·扑ֈ楷体字体SIMKAI.TTF
http://www.finereport.com/forumimages/font.png
2Q将楷体字体拯?/span>Linux操作pȝ?/span>JRE下的\lib\fonts文g?/span>
·注意q个JRE必须是服务器用到?/span>JDK下的JRE
例如服务器ؓtomcat
使用?/span> jdk?/span>usr?/span> /java/jdk1.5.0_13
登陆?/span>linux操作pȝ
Cd?/span>usr/java/jdk1.5.0_13/jre/lib/fonts
·登陆?/span>ftp 之前准备好的楷体拷贝到当前目录?/span>
ftp id
转到字体所在位|?span style="box-sizing: border-box" lang="EN-US">
get SIMKAL.TTF 到当前目录下
exit 退?span style="box-sizing: border-box; color: rgb(0,176,240)" lang="EN-US">ftp工具可以了
3Q重启服务器 解决操作pȝlinux下字体ؕ码问?br style="box-sizing: border-box" />文章转自Q?span style="box-sizing: border-box; font-family: 'Times New Roman', serif; font-size: 10.5pt" lang="EN-US">http://blog.vsharing.com/fanfanzheng/A1443212.html
一. 问题描述Q?span lang="EN-US">
使用 SQL Server jdbcdSQLServer2005中的大数据量表时Q如数据量达?/span>20万时Q发生如下类似错误:
?/span>. 原因Q?/span>
发生该情况与sqlserver jdbc驱动?/span>select Method有关?/span>selectMethod分ؓdirect?/span>cursor。当使用directӞ驱动会一ơ性蝲入所有结果集?/span>jvm内存中,因此造成?/span>out of memoryQ而?/span>cursorӞ会在服务器端创徏一?/span>cursorQ因此不会占据客L的大量内存?/span>
注意Q?/span>此问题只存在?span lang="EN-US">MS SQLSERVERQ其它关pd数据库无此问?span lang="EN-US">
?/span>. 解决办法Q?/span>
修改SQLServer2005 jdbc?/span>URL:
jdbc:sqlserver://192.168.100.118:1433;databaseName=test;selectMethod=cursor
如下图:
?/span>q种方式会媄响整个应用程?/span>Q?/span>可能引v其他普通情늚d性能下降?/span>
1Q在windows下找到系l用到的字体,q里以楷体D?/span>
·?/span>c盘的 windows文g夹的 Fonts文g多w面存放了windows中用到的所有字体,具体路径C:\WINDOWS\Fonts
·扑ֈ楷体字体SIMKAI.TTF
2Q将楷体字体拯?/span>Linux?/span>JRE下的\lib\fonts文g?/span>
·注意q个JRE必须是服务器用到?/span>JDK下的JRE
例如服务器ؓtomcat 使用?/span> jdk?/span>usr?/span> /java/jdk1.5.0_13
登陆?/span>linuxpȝ
Cd?/span>usr/java/jdk1.5.0_13/jre/lib/fonts
·登陆?/span>ftp 之前准备好的楷体拷贝到当前目录?/span>
ftp id
转到字体所在位|?span lang="EN-US">
get SIMKAL.TTF 到当前目录下
exit 退?span lang="EN-US">ftp
3Q重启服务器 解决linux下字体ؕ码问?/span>
解决ҎQ在打印|中d相应的纸张类?/span>
解决步棸Q?/span>
Q、在以往的Windows 98操作pȝ中,打印机属性里?#8220;U张大小”中有“自定?#8221;一V而Windows 2000和Windows XP中自定义的位|是不同于Windows 98的?/span>
q里用一个示例来表述。假定用户用了一?5cm宽,20cm高的自制U张Q想分别在Windows XP和Windows 2000操作pȝ中添加这Ƅ张类型,以便使用时可以方侉K择?/span>
׃在Window XP和Windows 2000操作pȝ中添加自定义U张的步骤完全相同,q里只用一个在windowsXP下的CZ作ؓ代表?/span>
在Windows XP操作pȝ中,步骤如下Q?/span>
Q?Q、调?#8220;服务器属?#8221;界面?/span>
?#8220;控制面板”中选择“打印机和传真?#8221;双击打开。然后点?#8220;文g”Q在下拉菜单中选择“服务器属?#8221;。如图(Q)Q?/span>
图(Q)Q打开“服务器属?#8221;
Q?Q、创建,q且保存自定义的U张?/span>
?#8220;服务器属?#8221;中,N?#8220;创徏新格?#8221;。然后在“表格?#8221;中ؓ自己新定义的U张起一个名字,比如Q创建新格式。在“宽度”Q?#8220;高度”中分别键?5Q和20?#8220;打印机区域边?#8221;可根据需要自行制定。最后点?#8220;保存”?/span>
一个名?#8220;创徏新格?#8221;的格式就产生了。其代表一U宽?5cm高度20cm的纸张大。如图(Q)?/span>
图(Q)Q?/span>创徏新格?/span>
Q?Q、在打印机属性中选用q款新定义的U张?下面以LQ-1600K4打印Zؓ例进行说明)
打开打印机属性,点击“打印首选项”Q点?#8220;高”Q点?#8220;U张大小”下拉菜单。在其中选择“创新建格?#8221;U张cd。即可。如图(Q)Q?/span>
图(Q)Q调用该格式
Q、所有的打印机限于它的机械结构(走纸pȝ、纸张感应系l){原因,都有自己的对U张大小的最基本的要求。ƈ不是所有的U张大小都可以支持到?/span>
比如有的用户希望打印10cm以下宽度的纸张,比如7cm宽的卡片铭牌Q自定义好纸张之后,却发现在自己?600K4打印机的属性中没有q款U型。这是因?600K4打印机默许的最纸宽ؓ9.91cmQ小于这个宽的的U张׃打印Z能保证顺利进U、正走U而不支持用户讑֮。因而用L不到自己讑֮?cmU宽?/span>