樹資料集實現組織樹報表

2021-09-24 12:55:36 字數 2886 閱讀 4424

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

圖一:縱向組織樹

圖二:橫向組織樹

一般分兩步構建樹資料集:

1)新增帶有層次關係的普通資料集;

2)基於普通資料集構建樹資料集。

新增資料集 ds1 取出原始資料,sql 語句為select * from 公司部門。

1)根據父欄位構建樹

使用情形:原始表結構中符合 id、parentid 結構,我們可以通過父 id 這個字段生成樹,新增樹資料集,如下圖。

需要特別強調的是,此種情況,需要有唯一根節點(就是下圖 parentid 為空的節點)。如果沒有,那麼構建樹時會無法正常建立索引,最後在前台使用下拉樹控制項時容易出現一些功能問題,比如控制項不能給預設值、比如不能模糊搜尋等。

2)根據資料長度構建樹

使用情形:原始表結構中所有id都在一列中,且沒有父 id 字段,但是 id 是有規律的,每組的長度相同,且子級的前n位就是父級編號,新增樹資料集,如下圖:

預覽樹資料集,可看到已自動生成遞迴樹資料,fr_gen_0為最高層,依次往下,如下:

1)模板設計

按照下圖所示將對應的資料列拖入到單元格中,預設單元格縱向擴充套件並設定左父格:a2 單元格的左父格設定為 a1,a3 單元格的左父格設定為 a2:

2)條件屬性隱藏空白行

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

在模板製作過程中,從第二層級開始就會有空白資料,需要將空白資料隱藏掉,選中 a2 和 a3 單元格,新增條件屬性,當資料為空時隱藏該行,如下圖:

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

3) 其他設定

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

1)模板設計

按照下圖所示將對應的資料列拖入到單元格中,設定單元格橫向擴充套件並設定父格:b1 單元格的左父格設定為 a1,c1 單元格的左父格設定為 b1:

2)條件屬性隱藏空白列

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

在模板製作過程中,從第二層級開始就會有空白資料,需要將空白資料隱藏掉,選中 b1 和 c1 單元格,新增條件屬性,當資料為空時隱藏該列,如下圖:

3)其他設定

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

1)問題描述

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

2)實現方法

先建立資料庫查詢資料集 ds1,然後資料集 ds1 裡 「call 儲存過程名 儲存過程引數」,再用 ds1 生成樹資料集 。

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

具體操作步驟如下:

新建乙個資料庫查詢,輸入:','$','$',?)},然後設定下引數的初值,這樣就產生了乙個普通的資料集 ds1。

再通過資料集 ds1,設定樹資料集就好了,此時就可以正常生成樹資料集了,如圖:

其餘操作和本文描述一樣了,只不過是通過儲存過程實現組織樹報表,需要增加呼叫儲存過程的這一步,詳情請參考:呼叫儲存過程

2)h5

示例一

已完成的模板,可參見%fr_home%\webroot\web-inf\reportlets\doc\advanced\groupreport\樹資料集組織樹報表.cpt。

EasyUI組織樹管理

1 先上圖看效果 這裡用到了easyui的treegid datatreegrid treegrid loaddata treearray treearray是組織的結果集,注意 組織的資料中,需要返回組織的父節點 parentid 2 新增組織 選擇上級組織,這裡用到了easyui的combotr...

start with 查詢組織樹關係

中的start with connect by prior字句 一,基本的使用語法 select from tablename start with 條件1 connect by 條件2 where 條件3 條件1 是根節點的限定語句,當然可以放寬限定條件,以取得多個根節點,也就是多棵樹 在連線關係...

SQL遞迴查詢實現組織機構樹

系統用到的組織機構樹,要實現對當前節點以及其子節點的查詢,資料庫sql要用到遞迴查詢,這也是我第一次接觸sql的遞迴查詢。先說一下什麼是遞迴查詢,簡單說來是將乙個樹狀結構儲存在一張表裡,比如乙個表中存在兩個字段 code,parent code,那麼通過表示每一條記錄的parent是誰,就可以形成乙...