溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

發(fā)布時(shí)間:2020-07-21 01:17:51 來(lái)源:網(wǎng)絡(luò) 閱讀:449 作者:雄霸天下啦 欄目:開(kāi)發(fā)技術(shù)

組織樹(shù)報(bào)表中由id與父id來(lái)實(shí)現(xiàn)組織樹(shù)報(bào)表,若層級(jí)數(shù)較多時(shí),對(duì)每個(gè)單元格設(shè)置過(guò)濾條件和形態(tài)會(huì)比較繁瑣,因此FineReport提供了一種特殊的數(shù)據(jù)集——樹(shù)數(shù)據(jù)集,只需要簡(jiǎn)單的設(shè)置就能自動(dòng)遞歸出層級(jí),方便的實(shí)現(xiàn)如下圖組織樹(shù)報(bào)表:

圖一

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

圖二

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

構(gòu)建樹(shù)

  • 新建報(bào)表,添加數(shù)據(jù)集

新建工作薄,添加數(shù)據(jù)集ds1取出原始數(shù)據(jù),SQL語(yǔ)句為SELECT * FROM 公司部門(mén)。

  • 定義樹(shù)數(shù)據(jù)集

1)根據(jù)父字段構(gòu)建樹(shù)

使用情形:原始表結(jié)構(gòu)中符合ID、parentID結(jié)構(gòu),我們可以通過(guò)父ID這個(gè)字段生成樹(shù),添加樹(shù)數(shù)據(jù)集,如下圖:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

 

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

2)根據(jù)數(shù)據(jù)長(zhǎng)度構(gòu)建樹(shù)

使用情形:原始表結(jié)構(gòu)中所有ID都在一列中,且沒(méi)有父ID字段,但是ID是有規(guī)律的,每組的長(zhǎng)度相同,且子級(jí)的前N位就是父級(jí)編號(hào),添加樹(shù)數(shù)據(jù)集,如下圖:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

 

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

 

  •  預(yù)覽數(shù)據(jù)

預(yù)覽樹(shù)數(shù)據(jù)集,可看到已自動(dòng)生成遞歸樹(shù)數(shù)據(jù),F(xiàn)R_GEN_0為最高層,依次往下,如下:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

縱向組織樹(shù)編輯

按照下圖所示將對(duì)應(yīng)的數(shù)據(jù)列拖入到單元格中,并將A2單元格的左父格設(shè)置為A1,A3單元格的左父格設(shè)置為A2:

   FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

  • 條件屬性

有上面預(yù)覽數(shù)據(jù)可以看到從二層FR_GEN_1開(kāi)始,就會(huì)有空白數(shù)據(jù),這是因?yàn)閿?shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)有上一級(jí)部門(mén)本身的部門(mén)名稱和部門(mén)ID,其上一級(jí)部門(mén)的部門(mén)級(jí)數(shù)會(huì)低一級(jí),比如說(shuō)上述數(shù)據(jù)的第一行為總部,雖然總部下面有子部門(mén),但是數(shù)據(jù)庫(kù)中還是要存儲(chǔ)總部這個(gè)部門(mén)的部門(mén)名稱和部門(mén)ID的,總部對(duì)應(yīng)的級(jí)數(shù)為一級(jí),那么其對(duì)應(yīng)的數(shù)據(jù)記錄行里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會(huì)沒(méi)有數(shù)據(jù),顯示為空白。

在模板制作過(guò)程中,從第二層級(jí)開(kāi)始就會(huì)有空白數(shù)據(jù),需要將空白數(shù)據(jù)隱藏掉,選中A2和A3單元格,添加條件屬性,當(dāng)數(shù)據(jù)為空時(shí)隱藏該行,如下圖:  FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

如果組織結(jié)構(gòu)的層級(jí)結(jié)構(gòu)不確定,即有的層級(jí)有子層,有的層級(jí)沒(méi)有子層時(shí),其組織樹(shù)報(bào)表的實(shí)現(xiàn)方式請(qǐng)查看不規(guī)范組織樹(shù)報(bào)表

  • 其它設(shè)置

由于自動(dòng)生成的字段是編碼,可以使用數(shù)據(jù)字典將其轉(zhuǎn)為對(duì)應(yīng)的部門(mén)名稱,如下圖:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表 

  • 保存與預(yù)覽

保存模板,點(diǎn)擊分頁(yè)預(yù)覽,效果如圖一。

橫向組織樹(shù)編輯

按照下圖所示將對(duì)應(yīng)的數(shù)據(jù)列拖入到單元格中,在右側(cè)單元格屬性表-擴(kuò)展屬性中將B1、C1單元格的擴(kuò)展方向設(shè)為橫向,

并將B1單元格的左父格設(shè)置為A1,C1單元格的左父格設(shè)置為B1:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表 

  • 條件屬性

有上面預(yù)覽數(shù)據(jù)可以看到從二層FR_GEN_1開(kāi)始,就會(huì)有空白數(shù)據(jù),這是因?yàn)閿?shù)據(jù)庫(kù)中存儲(chǔ)的數(shù)據(jù)有上一級(jí)部門(mén)本身的部門(mén)名稱和部門(mén)ID,其上一級(jí)部門(mén)的部門(mén)級(jí)數(shù)會(huì)低一級(jí),比如說(shuō)上述數(shù)據(jù)的第一列為總部,雖然總部下面有子部門(mén),但是數(shù)據(jù)庫(kù)中還是要存儲(chǔ)總部這個(gè)部門(mén)的部門(mén)名稱和部門(mén)ID的,總部對(duì)應(yīng)的級(jí)數(shù)為一級(jí),那么其對(duì)應(yīng)的數(shù)據(jù)記錄列里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會(huì)沒(méi)有數(shù)據(jù),顯示為空白。

在模板制作過(guò)程中,從第二層級(jí)開(kāi)始就會(huì)有空白數(shù)據(jù),需要將空白數(shù)據(jù)隱藏掉,選中B1和C1單元格,添加條件屬性,當(dāng)數(shù)據(jù)為空時(shí)隱藏該列,如下圖:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表

如果組織結(jié)構(gòu)的層級(jí)結(jié)構(gòu)不確定,即有的層級(jí)有子層,有的層級(jí)沒(méi)有子層時(shí),其組織樹(shù)報(bào)表的實(shí)現(xiàn)方式請(qǐng)查看不規(guī)則組織樹(shù)報(bào)表

  • 其它設(shè)置

由于自動(dòng)生成的字段是編碼,可以使用數(shù)據(jù)字典將其轉(zhuǎn)為對(duì)應(yīng)的部門(mén)名稱,如下圖:

 FineReport中樹(shù)數(shù)據(jù)集如何實(shí)現(xiàn)組織樹(shù)報(bào)表 

  • 保存與預(yù)覽

保存模板,點(diǎn)擊分頁(yè)預(yù)覽,效果如圖二。


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI