iReport+jasperreport建立子表的幾種方式(1),ireportjasper
在製作報表的過程中,子表是必不可少的,今天就研究了一下製作子表的幾種方式
一、串連資料庫建立子表
以MySQL為例:
我的資料來源資料庫中的表
1)iReport 建立父表
這個就是建立一個新的表格,不過記得資料來源要選擇mySQL ,其他的資料庫資料來源也一樣的。
2)建立好之後,我們來建立子表,在組件面板找到拖動到父表當中的任意一個地方,我是放到detail裡面的
它會產生一個嚮導
一路next下去,只是在最後一項選擇use empty datasource,不過選其他的也行,待會我們還要修改
3)說一下原理:這種方式就是利用每張報表都有的Parameters屬性,在iReport4.6中,點擊子報表在右側屬性欄的最下面有兩個屬性
一個是Parameters屬性,他可以用來向子表傳遞資料接下來我會說到,第二個是Return Values很明顯這個可以用來將子表的資料返回,這個有時間再說。
下面子表屬性進行設定:
有兩個屬性需要注意,一個是Subreport Expression用來指出子表的路徑,這個建立之後一邊不需要修改
另外一個是connect type,這個要選擇Use a connectionexpress 建立子表時候選擇預設值,就是父串連,這個現在不是重點,不過在之後的方式中,這個是很有用的
下面是重點:
設定點擊Parameters開啟這樣一個視窗,點擊add之後
這就是你自訂Parameters的地方,名字可以隨便取,我的是如下設定:名字是id我要傳遞給子表的是資料庫的ID欄位,到此,我們對於主表這邊的設定結束
4)下面設定子表這裡有一個關鍵點,就是在子表左側邊欄Parameters屬性這邊要建立一個Parameters,右鍵-》建立名字要和上面我們建立的一樣而欄位的類型要和從主表傳遞過來的欄位一樣:我定義的是id同時在我的資料庫中定義的ID欄位是String類型的,所以是以下設定注意,Default Value Expection一定要設定為“”字元,不然會報錯,折騰了我好幾個小時
這個設定好之後開啟資料連線視窗最左邊的小按鈕,開啟後使用select語句不過要使用我們自訂的欄位,如,
你會發現出現了一些屬性欄位選擇添加,就OK啦
我的欄位和子表設定
下面是預覽結果
OK,建立子表的第一種方式就是這樣,如果有需要留郵箱,我把源碼發過去,希望能共同學習
回家了,明天繼續寫
對於使用ireport與Jasperreport製作報表問題
一般是這個流程,不過也可以用Java代碼來直接做模板,也可以使用相關Jasperreport的jar包,來編譯xml檔案。不一定要用ireport來做模板。另外這隻是解決報表問題的一種方案,我還有其它更好的方案,與教程。另外有幾個簡單的執行個體。執行個體的網址我發離線留言了,另外郵箱也發給你了,你如果要教程和其它方案,就把你的郵箱發給我。或者給我發個Email。
使用iReport+JasperReport製作報表時格式設定
②有兩種方式,第一種在傳入這個儲存格之前在程式或者sql語句中就把這兩個值拼一塊,第二種就是在模板中要設定的這個field或者paramter中拼接:如:$V{PAGE_NUMBER}.toString()+"/"+$V{PAGE_COUNT}.toString() 這個的效果就是顯示"當前頁/總頁數"
③選中你要顯示的filed或者parameter 按右鍵,在彈出列表中選擇Field pattern 在彈出對話方塊中選擇Custom Format 在右側輸入框中輸入 yyyy-MM-dd HH:mm:ss然後從左側選擇Date,在右側列表中選擇剛剛輸入的yyyy-MM-dd HH:mm:ss點擊apply
④在左側導覽列中選擇Styles,在Parameters的上邊。可以建立自己的Styles,但本身已經提供了很多styles,如果想應用樣式選中要設定的parameter或者filed在右側的屬性面板中找到Style屬性,就可以選擇自己建立的Style或者本身提供的Style