91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

FineReport中如何制作樹數據集來實現組織樹報表

發布時間:2020-07-04 22:57:44 來源:網絡 閱讀:738 作者:雄霸天下啦 欄目:數據庫

1. 問題描述

FineReport,組織樹報表中由id與父id來實現組織樹報表,若層級數較多時,對每個單元格設置過濾條件和形態會比較繁瑣,因此FineReport提供了一種特殊的數據集——樹數據集,只需要簡單的設置就能自動遞歸出層級,方便的實現如下圖組織樹報表:

圖一

 FineReport中如何制作樹數據集來實現組織樹報表

圖二

FineReport中如何制作樹數據集來實現組織樹報表

2. FineReport構建樹

2.1 新建報表,添加數據集

新建工作薄,添加數據集ds1取出原始數據,SQL語句為SELECT * FROM 公司部門。

2.2 定義樹數據集

1)根據父字段構建樹

使用情形:原始表結構中符合ID、parentID結構,我們可以通過父ID這個字段生成樹,添加樹數據集,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表


FineReport中如何制作樹數據集來實現組織樹報表

2)根據數據長度構建樹

使用情形:原始表結構中所有ID都在一列中,且沒有父ID字段,但是ID是有規律的,每組的長度相同,且子級的前N位就是父級編號,添加樹數據集,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表


FineReport中如何制作樹數據集來實現組織樹報表

2.3 預覽數據

預覽樹數據集,可看到已自動生成遞歸樹數據,FR_GEN_0為最高層,依次往下,如下:

FineReport中如何制作樹數據集來實現組織樹報表

3. 示例一縱向組織樹

按照下圖所示將對應的數據列拖入到單元格中,并將A2單元格的左父格設置為A1,A3單元格的左父格設置為A2:

FineReport中如何制作樹數據集來實現組織樹報表

3.1 條件屬性

有上面預覽數據可以看到從二層FR_GEN_1開始,就會有空白數據,這是因為數據庫中存儲的數據有上一級部門本身的部門名稱和部門ID,其上一級部門的部門級數會低一級,比如說上述數據的第一行為總部,雖然總部下面有子部門,但是數據庫中還是要存儲總部這個部門的部門名稱和部門ID的,總部對應的級數為一級,那么其對應的數據記錄行里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會沒有數據,顯示為空白。

在模板制作過程中,從第二層級開始就會有空白數據,需要將空白數據隱藏掉,選中A2和A3單元格,添加條件屬性,當數據為空時隱藏該行,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表

注:如果組織結構的層級結構不確定,即有的層級有子層,有的層級沒有子層時,其組織樹報表的實現方式請查看不規范組織樹報表

3.2 其它設置

由于自動生成的字段是編碼,可以使用數據字典將其轉為對應的部門名稱,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表

3.3 保存與預覽

保存模板,點擊分頁預覽,效果如圖一

4. FineReport示例二橫向組織樹

按照下圖所示將對應的數據列拖入到單元格中,在右側單元格屬性表-擴展屬性中將B1、C1單元格的擴展方向設為橫向,

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

FineReport中如何制作樹數據集來實現組織樹報表

4.1 條件屬性

有上面預覽數據可以看到從二層FR_GEN_1開始,就會有空白數據,這是因為數據庫中存儲的數據有上一級部門本身的部門名稱和部門ID,其上一級部門的部門級數會低一級,比如說上述數據的第一列為總部,雖然總部下面有子部門,但是數據庫中還是要存儲總部這個部門的部門名稱和部門ID的,總部對應的級數為一級,那么其對應的數據記錄列里面就只有FR_GEN_0層,下面的FR_GEN_1和FR_GEN_2這兩層就會沒有數據,顯示為空白。

在模板制作過程中,從第二層級開始就會有空白數據,需要將空白數據隱藏掉,選中B1和C1單元格,添加條件屬性,當數據為空時隱藏該列,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表

4.2 其它設置

由于自動生成的字段是編碼,可以使用數據字典將其轉為對應的部門名稱,如下圖:

FineReport中如何制作樹數據集來實現組織樹報表

4.3 保存與預覽

保存模板,點擊分頁預覽,效果如圖二。

5.FineReport示例三存儲過程創建樹數據集

5.1問題描述

存儲過程直接生成樹數據集無效,如圖:

FineReport中如何制作樹數據集來實現組織樹報表

5.2解決思路

先建立數據庫查詢數據集ds1,然后數據集ds1里 “call 存儲過程名 存儲過程參數”,再用ds1生成樹數據集 。

若是調用數據庫存儲過程取數,官方只支持查詢語句select進行取數,其他寫法(例如下面的寫法), 返回的結果不能保證,不建議使用 :

具體操作步驟如下:

新建一個數據庫查詢,輸入:{call username.package.procedure('${p1}','${p2}','${p3}',?)},然后設置下參數的初值,這樣就產生了一個普通的數據集ds1,如圖:

FineReport中如何制作樹數據集來實現組織樹報表

再通過數據集ds1,設置樹數據集就好了,此時就可以正常生成樹數據集了,如圖:

FineReport中如何制作樹數據集來實現組織樹報表

其余操作和本文描述一樣了,只不過是通過存儲過程實現組織樹報表,需要增加調用存儲過程這步。

本文摘自博客園:http://www.cnblogs.com/laoA188/p/6944560.html



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

浦北县| 大方县| 公主岭市| 郑州市| 湖口县| 英山县| 侯马市| 中西区| 峡江县| 房产| 丰都县| 齐齐哈尔市| 汝城县| 民和| 绥宁县| 水富县| 林周县| 四子王旗| 中山市| 简阳市| 普兰县| 佛教| 廊坊市| 昌平区| 大关县| 商丘市| 宁化县| 客服| 延长县| 永丰县| 日照市| 南和县| 昌都县| 闵行区| 武功县| 郯城县| 哈密市| 当涂县| 澄城县| 栾城县| 徐闻县|