創建臨時表以及臨時表的維護工作
create global temporary table tmp_tablename
如果要調式臨時表,就必須將臨時表固化到數據庫中。
posted @ 2010-11-30 14:23 老鼠愛上貓 閱讀(199) | 評論 (0) | 編輯 收藏
posted @ 2010-11-30 14:23 老鼠愛上貓 閱讀(199) | 評論 (0) | 編輯 收藏
posted @ 2010-11-19 14:23 老鼠愛上貓 閱讀(646) | 評論 (0) | 編輯 收藏
遇到一個問題:根據姓名的長度不同,需要設置不同的字號,如果是老外可能還要更改字體。
最后通過在iReport中建立conditional style 解決了。
設置如下:
1.右鍵 style-->添加-->style
2.選中當前的style,在屬性面板更改其屬性
name:style的名字
default style: 是否默認的style,如果選中的話則此style將做為默認的style。界面上的元素如果沒有設置屬性和上style屬性沒有設置為其它style時,則會默認按照default style設置該元素的屬性。當有多個style存在時,只能又一個默認的style。
opaque:設置透明度。
其它的屬性和設置field的屬性一樣。
3.右鍵 當前的style-->添加 conditional style
4.選中新建的conditional style,在屬性面板中更改其屬性
condition expression : 設置conditional style“工作”的條件,這個屬性最重要,其它的屬性和設置style的屬性相同。
比如現在根據xm(姓名)field的長度設置是否應用當前的conditional style:
condition expression 的值:new Boolean($F{xm}.length()>4)
或 $F{xm}.length()>4?new Boolean(true):new Boolean(false)
JDK1.5及以上的版本也可以這么寫:
$F{xm}.length()>4 或 $F{xm}.length()>4?true:false
5.在需要用的field或parameters的屬性面板中設置其style為新建的style。
posted @ 2010-11-19 09:24 老鼠愛上貓 閱讀(209) | 評論 (0) | 編輯 收藏
posted @ 2010-11-18 14:02 老鼠愛上貓 閱讀(433) | 評論 (0) | 編輯 收藏
1.根據修改detail的高度,讓其自適應。
2.根據分組來分頁(比較好實現),分組時有在“新的一頁打開”這個選項
3.定義一個自增的變量index,變量的表達式是“new Integer("1")”,計算類型為“count”其他默認。添加一個“Break”(頁分隔符)。修改它的屬性“print when expression”,表達式為“new Boolean($V{index}.intValue()%10==0)”。(這個方法最后由其是在分組時)
posted @ 2010-11-18 13:59 老鼠愛上貓 閱讀(3053) | 評論 (1) | 編輯 收藏
關于iReport和JasperReport的簡明手冊
By Gem 伍子軒
JasperReport的開發環境必須要導入以下所有包:
1. JasperReport包,如jasperreports-0.6.1.jar;
2. Aparche Common包,包括logging、digester、beanutils、collections、logging-api;
3. iText包,包括itext-1.1.jar和iTextAsian.jar(用于輸出中文字符到PDF文件)
以上所有包(除了iTextAsian.jar)都已經包含在iReport\lib目錄下。
用iReport可視化編輯生成的文件是jrxml文檔,這是一種xml文件,記錄了一份report的詳細信息,我們可以直接用寫字板打開它編輯,iReport就是一個方便我們生成和編輯jrxml文件的工具,它也可以很方便地將jrxml文件編譯成jasper報表文件。
jrxml文件通過Jasper編譯之后就變成了jasper文件,這份文件才是真正在程序中調用生成報表的report文件。
但是有一點要注意的是,jasper的各個版本編譯出來的jasper文件并不兼容,就是說用0.6.1版編譯出來的文件用0.6.4版調用是會出錯的,而iReport自帶的Jasper版本是0.6.1,而jasper的最新版本是0.6.4。所以為了保持通用性,我建議只用iReport來開發編輯jrxml文件,而不編譯成jasper文件,在我們的打印報表程序中再即時編譯一次。雖然這樣效率可能會低了一點,但是保證了不同版本的兼容性。
在我們的程序中,要調用Jasper的話,首先要得到一個數據庫的Connection,形如:Connection con = ...
需要往JasperReport傳參數的話只需要新建一個Map,以參數名作為key,需要傳入的對象作為value,譬如:
Map props = new HashMap();
props.put("name", new String("name"));
需要多個參數只需分別put進Map里去就可以了。
JasperReport有如下幾個主要的Manager:
JasperCompileManager |
將jrxml文件編譯成jasper文件或JasperReport對象 |
JasperFillManager |
從數據源中獲取數據并填充jasper文件或JasperReport對象,產生JasperPrint對象 |
JasperPrintManager |
將JasperPrint對象直接輸出到打印機打印 |
JasperExportManager |
將JasperPrint對象導出成PDF或HTML文件(或流) |
JasperRunManager |
運行一個jasper文件或JasperReport對象并輸出到PDF或Html文件(或流)中,我的理解是等于集成了JasperFillManager和JasperExportManager的功能 |
對于上述對象的詳細說明請參閱JasperReport的文檔。
例程:
例程:public static void main(String[] args) {
try {
Class.forName("org.gjt.mm.mysql.Driver");
Connection con = DriverManager.getConnection(
"jdbc:mysql://wes:3306/umpdb?useUnicode=true&characterEncoding=GBK", "root", "elite");
File f1 = new File("Account.jrxml");
File f2 = new File("Contact.jrxml");
JasperReport main = JasperCompileManager.compileReport(f1
.getAbsolutePath());
JasperReport report = JasperCompileManager.compileReport(f2
.getAbsolutePath());
Map props = new HashMap();
props.put("subreport", report);
JasperPrint print = JasperFillManager.fillReport(main, props,con);
//JasperPrintManager.printReport(print,true);
JasperExportManager.exportReportToPdfFile(print, "a.pdf");
//JasperRunManager.runReportToPdfFile("Account.jasper", "a.pdf", props, con);
} catch (ClassNotFoundException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
} catch (SQLException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
} catch (JRException e) {
// TODO 自動生成 catch 塊
e.printStackTrace();
}
}
1.iReport中新建中文報表的時候記得要輸入XML編碼GB2312。
2.iReport中定義中文字體的時候,要選擇PDF Font Name為STSong-Light(宋體)、MHei-Medium(黑體)、MSung-Light,在PDF Encoding中選擇GB-UCS2-H(Chinese Simplified),否則輸出到PDF時會亂碼。
3.用Report SQL查詢之后,可能會出現某些字段沒有自動建立Field,就需要在Field中手動定義了。
posted on 2006-12-04 18:28 Tom 閱讀(1169) 評論(0) 編輯 收藏 所屬分類: 報表工具 、Appfuse
posted @ 2010-11-16 09:42 老鼠愛上貓 閱讀(270) | 評論 (0) | 編輯 收藏