數(shù)據(jù)庫表為縱表時(shí)轉(zhuǎn)變?yōu)闄M表的設(shè)計(jì)方法
Posted on 2011-11-24 10:04 FineReport——報(bào)表技術(shù)領(lǐng)跑者 閱讀(773) 評論(0) 編輯 收藏 所屬分類: Java報(bào)表技術(shù)知識一. 橫表&縱表:
數(shù)據(jù)庫表按照存儲的數(shù)據(jù)結(jié)構(gòu)不同區(qū)分為橫表與縱表,通過如下數(shù)據(jù)的存儲我們分別對橫表與縱表進(jìn)行簡單介紹:
橫表:
http://www.finereport.com/forumimages/zjkbwzbszbwhb1.jpg
縱表:
http://www.finereport.com/forumimages/zjkbwzbszbwhb2.jpg
由圖1,2可以看出,若我們要將每種產(chǎn)品的信息羅列在報(bào)表中展示,使用橫表將會非常方便,直接將各字段拖進(jìn)設(shè)計(jì)器對應(yīng)標(biāo)題的單元格即可,字段間不需要考慮任何邏輯關(guān)(默認(rèn)有擴(kuò)展關(guān)系)如下圖:
http://www.finereport.com/forumimages/zjkbwzbszbwhb3.jpg
預(yù)覽如下:
http://www.finereport.com/forumimages/zjkbwzbszbwhb4.jpg
二. Java報(bào)表軟件FineReport實(shí)現(xiàn)縱表轉(zhuǎn)為橫表顯示:
使用縱表時(shí),想達(dá)到如圖4的效果,也很簡單:
http://www.finereport.com/forumimages/zjkbwzbszbwhb5.jpg
其中:
單元格 列名 設(shè)置屬性
A2: 字段編號 默認(rèn)
B1: 名稱 設(shè)置為從左向右擴(kuò)展,其余默認(rèn)
B2: 屬性 不擴(kuò)展,其余默認(rèn)
只需要設(shè)置名稱字段為橫向擴(kuò)展,邏輯關(guān)系使用默認(rèn)的,在展示數(shù)據(jù)時(shí),就會對應(yīng)選擇出字段編號為A2,名稱為B1的屬性值,如下圖所示:
http://www.finereport.com/forumimages/zjkbwzbszbwhb6.jpg
便達(dá)到了數(shù)據(jù)庫表為縱表時(shí)轉(zhuǎn)變?yōu)闄M表顯示。
三. 潤乾實(shí)現(xiàn)縱表轉(zhuǎn)為橫表顯示:
潤乾報(bào)表在該問題有兩種解決方案:
一. 參考潤乾官網(wǎng)--à知識庫中---à數(shù)據(jù)庫為縱表時(shí)轉(zhuǎn)為橫表展現(xiàn)的設(shè)計(jì)方法:
定義了兩個(gè)數(shù)據(jù)集ds1,ds2,都取用數(shù)據(jù)庫中的那個(gè)縱表:
http://www.finereport.com/forumimages/zjkbwzbszbwhb7.jpg
B2:=ds1.dselect(字段編號) //相當(dāng)于select distinct ……,取所有不重復(fù)的”字段編號”值,或者用=ds1.group(字段編號)用字段編號分組
C1:=ds1.dselect(名稱) //取所有不重復(fù)的”名稱”值
C2:=ds2.select(屬性,,ds2.字段編號==B2&&ds2.名稱==C1) //用橫軸”字段編號”,縱軸”名稱”作為篩選條件,把唯一的”屬性”值取出來 。
結(jié)果預(yù)覽如下:
http://www.finereport.com/forumimages/zjkbwzbszbwhb8.jpg
四. 總結(jié):
由上可以看出,Java報(bào)表軟件FineReport與潤乾都可以使用簡單的交叉報(bào)表來實(shí)現(xiàn)數(shù)據(jù)庫表為縱表時(shí)轉(zhuǎn)變?yōu)闄M表來顯示:
l 操作都很簡單,步驟也基本類似
l 潤乾使用數(shù)據(jù)表字段時(shí)默認(rèn)為列表型,而Java報(bào)表軟件FineReport默認(rèn)為分組,后者更貼近用戶的需求,大部分用戶制作的是復(fù)雜的自由報(bào)表,所以通常需要合并相同項(xiàng)
文章轉(zhuǎn)自:http://blog.vsharing.com/fanfanzheng/A1449895.html