1. 问题描述
FineReport,组织树报表中由id与父id来实现组织树报表,若层级数较多时,对每个单元格设置过滤条件和形态会比较繁琐,因此FineReport提供了一种特殊的数据集——树数据集,只需要简单的设置就能自动递归出层级,方便的实现如下图组织树报表:
图一
2. FineReport构建树
2.1 新建报表,添加数据集
新建工作薄,添加数据集ds1取出原始数据,SQL语句为SELECT * FROM 公司部门。
2.2 定义树数据集
1)根据父字段构建树
使用情形:原始表结构中符合ID、parentID结构,我们可以通过父ID这个字段生成树,添加树数据集,如下图:
2)根据数据长度构建树
使用情形:原始表结构中所有ID都在一列中,且没有父ID字段,但是ID是有规律的,每组的长度相同,且子级的前N位就是父级编号,添加树数据集,如下图:
2.3 预览数据
预览树数据集,可看到已自动生成递归树数据,FR_GEN_0为最高层,依次往下,如下:
3. 示例一纵向组织树
按照下图所示将对应的数据列拖入到单元格中,并将A2单元格的左父格设置为A1,A3单元格的左父格设置为A2:
3.1 条件属性
有上面预览数据可以看到从二层FR_GEN_1开始,就会有空白数据,这是因为数据库中存储的数据有上一级部门本身的部门名称和部门ID,其上一级部门的部门级数会低一级,比如说上述数据的第一行为总部,虽然总部下面有子部门,但是数据库中还是要存储总部这个部门的部门名称和部门ID的,总部对应的级数为一级,那么其对应的数据记录行里面就只有FR_GEN_0层,下面的FR_GEN_1和FR_GEN_2这两层就会没有数据,显示为空白。
在模板制作过程中,从第二层级开始就会有空白数据,需要将空白数据隐藏掉,选中A2和A3单元格,添加条件属性,当数据为空时隐藏该行,如下图:
注:如果组织结构的层级结构不确定,即有的层级有子层,有的层级没有子层时,其组织树报表的实现方式请查看不规范组织树报表
3.2 其它设置
由于自动生成的字段是编码,可以使用数据字典将其转为对应的部门名称,如下图:
3.3 保存与预览
保存模板,点击分页预览,效果如图一
4. FineReport示例二横向组织树
按照下图所示将对应的数据列拖入到单元格中,在右侧单元格属性表-扩展属性中将B1、C1单元格的扩展方向设为横向,
并将B1单元格的左父格设置为A1,C1单元格的左父格设置为B1:
4.1 条件属性
有上面预览数据可以看到从二层FR_GEN_1开始,就会有空白数据,这是因为数据库中存储的数据有上一级部门本身的部门名称和部门ID,其上一级部门的部门级数会低一级,比如说上述数据的第一列为总部,虽然总部下面有子部门,但是数据库中还是要存储总部这个部门的部门名称和部门ID的,总部对应的级数为一级,那么其对应的数据记录列里面就只有FR_GEN_0层,下面的FR_GEN_1和FR_GEN_2这两层就会没有数据,显示为空白。
在模板制作过程中,从第二层级开始就会有空白数据,需要将空白数据隐藏掉,选中B1和C1单元格,添加条件属性,当数据为空时隐藏该列,如下图:
4.2 其它设置
由于自动生成的字段是编码,可以使用数据字典将其转为对应的部门名称,如下图:
4.3 保存与预览
保存模板,点击分页预览,效果如图二。
5.FineReport示例三存储过程创建树数据集
5.1问题描述
存储过程直接生成树数据集无效,如图:
5.2解决思路
先建立数据库查询数据集ds1,然后数据集ds1里 “call 存储过程名 存储过程参数”,再用ds1生成树数据集 。
若是调用数据库存储过程取数,官方只支持查询语句select进行取数,其他写法(例如下面的写法), 返回的结果不能保证,不建议使用 :
具体操作步骤如下:
新建一个数据库查询,输入:{call username.package.procedure('${p1}','${p2}','${p3}',?)},然后设置下参数的初值,这样就产生了一个普通的数据集ds1,如图:
再通过数据集ds1,设置树数据集就好了,此时就可以正常生成树数据集了,如图:
其余操作和本文描述一样了,只不过是通过存储过程实现组织树报表,需要增加调用存储过程这步。
本文首发于CSDN:http://blog.csdn.net/szd_happy/article/details/72865899
相关推荐
分片报表是指将报表划分为多个独立的区域,每个区域可以连接不同的数据源,甚至在同一个报表中实现数据的横向、纵向或双向分片。这在处理复杂交叉报表时非常有用,例如,可以将部门数据与产品数据结合,或者按照时间...
### FineReport报表软件技术知识点详解 #### 一、概述 FineReport是一款由南京帆软软件有限公司开发的专业报表设计工具,其核心...对于希望提升报表制作效率的企业和个人来说,FineReport无疑是一个值得考虑的选择。
- 树数据集适用于处理层次结构复杂的数据,例如组织架构。 - FineReport支持多种文件数据集类型,如XML、TXT和Excel。 6. **模板设计** - 制作模板的基本流程包括新建、设计、数据绑定和预览等步骤。 - 单元格...
【FineReport80培训】是针对FineReport设计的一款初级到高级的报表制作教程。FineReport是一款强大的报表设计工具,主要用于企业级数据可视化和分析。在本次培训中,我们将深入理解其核心概念和功能。 首先,我们...
- 对于大型组织,使用树数据集能有效管理复杂的人事层级结构。 - 模板页面一旦引用了数据集,即使数据集名称改变,模板内容也会自动调整引用。 备考FCRA报表工程师,考生需要掌握FineReport的各项基本操作、数据...
同时,FineReport也支持类excel设计、动态格间计算、独立部署、嵌入式部署、SAP数据集、JSON数据集、可视化参数dashboard、存储过程、文件数据源、程序数据源、内置数据集以及丰富的图表等功能。 在设计器特性方面...
你可以通过数据集来组织和预处理数据,比如设置SQL查询语句,实现数据的过滤、排序和分组。数据集的灵活性使用户能够处理复杂的数据逻辑,从而在报表中展示精确的信息。 除了报表设计,帆软8.0也提供了强大的数据...
4. **树数据集**:当组织结构较为复杂时,使用树数据集可以更高效地管理多层级的数据关系。 5. **文件数据集类型**:支持的文件数据集类型包括xml、excel、txt等格式,方便从不同格式的文件中读取数据。 6. **模板...
3. **数据集**:数据集是报表设计的基础,用于定义数据源、查询条件和字段选择,是构建报表的起点。 4. **模板设计类型**:包括了不同类型的报表模板,如表格、图表、自由表等,满足各种展示需求。 5. **模板预览*...
3. **准备工作**:在设计大屏前,需要进行一系列的准备工作,包括设置数据库连接以便获取数据,定义数据集来组织数据,以及安装必要的插件以实现特定功能。 4. **数据集定义**:数据集是报表的基础,需要根据业务...
- **知识点**: 当组织结构复杂时,使用树数据集可以简化操作。 - 树数据集适用于表示层次结构的数据,提高数据处理效率。 **5. 文件数据集类型** - **知识点**: FineReport 支持的文件数据集类型包括 XML、TXT 和 ...
FineBI的用户管理中,可以通过FineReport配置树数据集,然后FineBI进行服务器数据集读取,导入具有树数据集的部门机构用户 **知识点:** - **树数据集:** 一种以层次结构存储数据的数据集类型。 - **部门机构用户...
描述统计学关注数据集的概括和展示,而推断统计学通过样本数据推断总体特性。 3. **箱线图**:箱线图是用来显示一组数据分布的四分位数,它能有效展示数据的离散程度,而不是集中趋势。 4. **权重分配**:在考核...