文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

FineReport中如何制作树数据集来实现组织树报表

2024-04-02 19:55

关注

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



阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯