发新话题
打印

用父子关系的树状结构数据集作报表

用父子关系的树状结构数据集作报表

我们先来看一张报表,如下所示:
(图1)

这张报表没看上去,没什么特别,但问题是所用的数据很特别,来源如下两张数据库表:

(图2)          (图3)

(图2)这是一个有id和父id字段的数据库表, 用来描述一种有层次关系的数据。(图3)是表示每个叶节点的数据(本例中的西湖区,江东区等),这时候我们想做出如(图1)所示报表效果,在杰表中该如何实现?


我们按以下步骤来进行:   

1:新建空白报表
2:添加数据集
图(4

这张表展示的是部门的数据,pid 是指部门的父ip 例如 西湖区的上一级就为杭州市

3:选中数据集tree -添加视图 树节点
图(4

父节点字段选中pid,根id 可以看图(2)中部门的值为0 因为是字符型的所以用引号
图(5

4:选中刚创建好的树节点mytree 右键 添加数据集(明细表)


5:拖动mytree到报表设计区


我们现在要改动表格来达到我们需要的样式





在上图中可以看到修改后的表格单元格中的内容比较多。下面我们一一进行解释
$.isDetail()?"":repeat("
",$.level-1)+$.name

这里的$.isDetail()?"":repeat("
",$.level-1)
表示如果是明细数据那么就按照数据的级别减一(l例如西湖区的级别是2那么显示西湖区的时候就在西湖区前面加一空格)替换成空格+$.name名称字段

6:下面进行其他的设置




点击第二行的行板,然后选中标签中的RowPanel 点击打印样式-可见性-是否可见-编辑
!$.isDetail()表示当不等于明细数据的时候显示



点击第三行的行板,选中标签中的RowPanel 重复以上的步骤。在公式定义中写上
$.isDetail()
表示当等于明细数据的时候显示

7:点击行板-选中标签-打印样式-可见性-是否可见



编辑$.level>0
当级别小于0的时候不显示(从图2中可以看到此示例是不显示名称为部门的数据)

至此可得如图(1)所示的报表效果。

[ 本帖最后由 three 于 2010-4-22 10:34 编辑 ]
附件: 您所在的用户组无法下载或查看附件

TOP

发新话题