wuxiren123

          2017年4月6日 #

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

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

          圖一

          圖二


          構(gòu)建樹

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

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

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

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

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

           

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

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

           

           

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

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

          縱向組織樹編輯

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

            

          • 條件屬性

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

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

          如果組織結(jié)構(gòu)的層級結(jié)構(gòu)不確定,即有的層級有子層,有的層級沒有子層時,其組織樹報表的實現(xiàn)方式請查看不規(guī)范組織樹報表

          • 其它設(shè)置

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

           

          • 保存與預(yù)覽

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

          橫向組織樹編輯

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

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

           

          • 條件屬性

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

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

          如果組織結(jié)構(gòu)的層級結(jié)構(gòu)不確定,即有的層級有子層,有的層級沒有子層時,其組織樹報表的實現(xiàn)方式請查看不規(guī)則組織樹報表

          • 其它設(shè)置

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

           

          • 保存與預(yù)覽

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

          posted @ 2017-04-06 15:56 喝水居然長肉 閱讀(130) | 評論 (0)編輯 收藏

          主站蜘蛛池模板: 怀宁县| 阿合奇县| 靖安县| 和林格尔县| 榆社县| 兴仁县| 天等县| 宜黄县| 汨罗市| 潜江市| 怀柔区| 长白| 深圳市| 漳浦县| 收藏| 万州区| 灌云县| 陇川县| 丹东市| 吉木乃县| 高青县| 贵阳市| 汽车| 江阴市| 长沙县| 略阳县| 崇礼县| 佛冈县| 资中县| 明星| 仪征市| 宜黄县| 肥东县| 衢州市| 枞阳县| 玛多县| 青神县| 韶山市| 任丘市| 江陵县| 牙克石市|