关于DATAREPORT报表分组问题,分组再分组。

时间:2021-09-18 12:40:43

用DATAREPORT打印报表可以分组打印,但只能分一次组,即在报表中只用一个分组,但报表中插入分组可以插入多个。
  问1:报表中插入多个分组是否用于实现多分组的使用,如果不是,有何用途?    
    问2:本人在报表中只能实现一个分组的使用,可以实现在分组的基础上再分组吗?即实现报表格式如下:(按01分大组,再按01-01分小组,最后细节是01-01-01)
字段:a     b       c        d  
     01   01-01  01-01-01   50 

------------
  01
  01-01
    01-01-01 50
    01-01-01  60
------------
  01
  01-02
    01-02-01 70
    01-02-01 80
------------
  02
  02-01
    02-01-01 90
    02-01-01 20
希望知道的人多提点一下,我刚学VB不久,最好能有SQL语句(类似 SHAPE {}......),前后的设置和代码我都知道(如有要特别注意的请指明),就只能实现一次分组,如何才能实现分组再分组呢?

8 个解决方案

#1


用DATAPORT 還真沒有做過三次分組的
建議你弄到EXECL然後打印算了...

#2


当前可以在分组中分组!
主要是要绑定的记录集要设置对应的层次关系。

#3


简单的方法就是加一个DataEnvironment,设置好分组以后,右键选择其“层次结构信息”就可以相关的SHAPE命令了

#4


当前可以在分组中分组!
主要是要绑定的记录集要设置对应的层次关系。


我就是不知道如何在当前分组中再分组,该怎么做?能说得详细一点吗?
还有就是上边的表有些错了(其实上边的表已经可以实现了,<分组时用两个字段>,只是每个小组中又出现大组的名字,大组的名字最好是只出现一次),最终的表应该是如下:

------------
  01
-----------------------
  01-01
    01-01-01 50
    01-01-01  60
------------
  01-02
    01-02-01 70
    01-02-01 80
------------
  02
----------------------
  02-01
    02-01-01 90
    02-01-01 20

我在datareport中用了两个分组,但是跟用一个分组出现的结果是一样的,就是没办法实现大组的名字只出现一次.今天在书店看了一本书,里边有说复杂的报表如何做,但只有两页就说完了,大致是说用父子孙的关系在dataenvironment中建立好后,再把字段托到表中,我建好后在datareport中的datamember不知选哪个好,因为有四个选(DATASOURCE已选了DATAENVIRONMENT),不管选哪个都出错,不选也出错.是不是还有哪里没做好?每个命令的设置已分组了,就是总出错:从当前数据资源中取得行值失败(DATAMEMBER 什么都不选),报表部分与数据源不匹配(在四个中选一个).

#5


补充:书中用的链接不是用Microsoft Jet 4.0 OLE DB 的,好像是SQL还是客户之类的,这个有关系吗?
     另外我把"层次结构信息"里的内容复制出来,捆到 MSH FlexGrid 能显示出来,也是我想要的层次效果,就是报表总报错.

#6


在DE中先建立与数据库的连接Connection1
右键Connection1“添加命令”,添加一个command1,设置按字段a分组
再右键command1“添加子命令”,添加一个command2,设置与command1的关联为字段b,设置分组字段为b
然后添加一个rpt,设置datasource为DE的名称;datamember为command1,这个注意,不能用其它的,比如“command1_分组”之类
然后你右键rpt表头,选择“检索结构”,这样你就可以得到正确的报表结构了
设置txt属性的时候注意对应需要的分组命令(比如command1_分组等等)就可以了,分组字段不要设置datamember,细节要设置
大概就是这样,你多试试就可以了

#7


Microsoft Jet 4.0 OLE DB是连接ACCESS数据库的,你根据自己的数据库,选择相应的驱动

#8


多谢 vbman2003(家人)  ,问题己基本解决,剩下的我会慢慢尝试的。

#1


用DATAPORT 還真沒有做過三次分組的
建議你弄到EXECL然後打印算了...

#2


当前可以在分组中分组!
主要是要绑定的记录集要设置对应的层次关系。

#3


简单的方法就是加一个DataEnvironment,设置好分组以后,右键选择其“层次结构信息”就可以相关的SHAPE命令了

#4


当前可以在分组中分组!
主要是要绑定的记录集要设置对应的层次关系。


我就是不知道如何在当前分组中再分组,该怎么做?能说得详细一点吗?
还有就是上边的表有些错了(其实上边的表已经可以实现了,<分组时用两个字段>,只是每个小组中又出现大组的名字,大组的名字最好是只出现一次),最终的表应该是如下:

------------
  01
-----------------------
  01-01
    01-01-01 50
    01-01-01  60
------------
  01-02
    01-02-01 70
    01-02-01 80
------------
  02
----------------------
  02-01
    02-01-01 90
    02-01-01 20

我在datareport中用了两个分组,但是跟用一个分组出现的结果是一样的,就是没办法实现大组的名字只出现一次.今天在书店看了一本书,里边有说复杂的报表如何做,但只有两页就说完了,大致是说用父子孙的关系在dataenvironment中建立好后,再把字段托到表中,我建好后在datareport中的datamember不知选哪个好,因为有四个选(DATASOURCE已选了DATAENVIRONMENT),不管选哪个都出错,不选也出错.是不是还有哪里没做好?每个命令的设置已分组了,就是总出错:从当前数据资源中取得行值失败(DATAMEMBER 什么都不选),报表部分与数据源不匹配(在四个中选一个).

#5


补充:书中用的链接不是用Microsoft Jet 4.0 OLE DB 的,好像是SQL还是客户之类的,这个有关系吗?
     另外我把"层次结构信息"里的内容复制出来,捆到 MSH FlexGrid 能显示出来,也是我想要的层次效果,就是报表总报错.

#6


在DE中先建立与数据库的连接Connection1
右键Connection1“添加命令”,添加一个command1,设置按字段a分组
再右键command1“添加子命令”,添加一个command2,设置与command1的关联为字段b,设置分组字段为b
然后添加一个rpt,设置datasource为DE的名称;datamember为command1,这个注意,不能用其它的,比如“command1_分组”之类
然后你右键rpt表头,选择“检索结构”,这样你就可以得到正确的报表结构了
设置txt属性的时候注意对应需要的分组命令(比如command1_分组等等)就可以了,分组字段不要设置datamember,细节要设置
大概就是这样,你多试试就可以了

#7


Microsoft Jet 4.0 OLE DB是连接ACCESS数据库的,你根据自己的数据库,选择相应的驱动

#8


多谢 vbman2003(家人)  ,问题己基本解决,剩下的我会慢慢尝试的。