關於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、一個儲存格內容過多報錯:
臨時解決方案,直接合并多個儲存格可以增加輸入內容。