博计报表使用递归数据制作分组报表

递归形式存储数据是客户在存储数据经常用到的,比如说每条记录都有自己的id和父id,在对这样的数据进行处理的时候,尤其是将这样的数据做成分组形式时,有些客户发现会遇到一些问题,博计报表拥有强大的数据处理功能,对于类似的问题都可以解决,下面就介绍一下递归的数据如何制作分组报表。

设计思路就是先将根节点的id也就是所有节点的起源显示出来,然后通过query()这个函数将其子节点筛选出来,这样一级一级展示,就可以完成报表的分组设计了。

首先,看一下数据在数据库里的存储方式。

1.png

从这里可以看出 1、2 是所有节点的跟节点,3、4、5的父节点为1,6和7 的父节点是2等等。

下面设计报表。

建立数据集:sql语句为:SELECT diguitest.id,diguitest.fid FROM diguit,设计报表如下图所示。

2.png

然后将根节点显示出来,在A2中显示根节点,也就是 父节点为0的点。

A2:=ds1.select(id,,fid==”0″)

B2,C2,D2,这三个单元格分别写:

=list(query(”select diguitest.id from diguitest where diguitest.fid=?”,A2))

=list(query(”select diguitest.id from diguitest where diguitest.fid=?”,B2))

=list(query(”select diguitest.id from diguitest where diguitest.fid=?”,C2))

以B2为例,query(”select diguitest.id from diguitest where diguitest.fid=?”,A2)这句的含义是选出以A2为父节点的所以id值,然后将得到的值用list封装起来,展现的时候就有扩展的样式了。

浏览报表,结果如下图所示。

3.png

通过以上步骤便完成分组报表的设计,清晰的看出层级关系,如果层级较少的话也可以通过sql语句来实现,在sql中进行拼接,使得每条记录都包含该节点到根节点的所有节点,这样就可以通过博计自带的分组函数来实现分组设计。

浏览次数:0 ; 发布日期:2010/04/14

热门文章

  • 申请试用授权 - 47,193 views
  • 使用入门教程简介 - 29,583 views
  • .NET报表产品概况 - 26,615 views
  • 联系我们 - 13,412 views
  • 技术支持 - 9,740 views
  • 高效报表设计 - 8,680 views
  • Web报表工具的新起点 - 7,305 views
  • 复杂报表的制作 - 6,763 views
  • Web报表软件的采购成本 - 6,244 views
  • Web报表软件的集成方案 - 4,888 views