用activereport打印报表,根据某个字段分组,是不是字段内容相等的被分到一个组里,我分出来怎么是字段内容连续相等的时候才被分到一个组里,隔了一条记录的话,会重新分组。求解决办法。
我分出来如下:(根据姓名分组)原记录                              分组后
--------------------               ------------------------    
张三   10:00:00                    张三
张三   11:34:23                    张三   10:00:00
李四   12:07:45                    张三   11:34:23
张三   12:34:22                    李四
                                   李四   12:07:45 
                                   张三
                                   张三   12:34:22

解决方案 »

  1.   

    楼主我和你一样的遭遇!请看★ 项目快到期了,这样的分组报表如何用ActiveReport实现 ★ [引言]我的项目快到期了,可惜我当初是把ActiveReport报表学习放在最后完成,结果现在连学习的时间都没有了,6月末是协议结束期。
    请各位专家给一个解决方案好吗?能让我度这个难关!!!我把问题简单写一下,望各位ActiveReport高手明鉴啊-----→http://community.csdn.net/Expert/topic/3100/3100678.xml?temp=.4598657
      

  2.   

    在AV报表中建个GroupHeader1(鼠标右键,添加),GroupHeader1有个datafield属性,设置一下你分组的字段(案卷号),添加Field1在GroupHeader1里,detail填写正常的字段.
      

  3.   

    向楼上的那么走就可以了阿一般装active report都有离子程序,可以参考一下
      

  4.   

    to fuanwei
    我是这么做的呀,但是分组后结果就是象我说的那样,如果分组的字段内容连续相等的话分在一组,隔了一条不相等的记录的话,不会和前面的那个分在同一组。
      

  5.   

    在AV报表中建个GroupHeader1(鼠标右键,添加),GroupHeader1有个datafield属性,设置一下你分组的字段(姓名),添加Field1在GroupHeader1里,detail填写正常的字段.再在GroupHeader1里家一个field控件字段为姓名
      

  6.   

    分组
    GroupHeader1  datafield   姓名
    在家一个field 
    detail 里面    添加  
    2个field
    姓名,时间
      

  7.   

    首先介绍一下AR与你这个问题相关的基本功能,
    一,分组功能:在设计页面上右击可以插入一个group(分组),这样你可以对数据报表分组显示。
    二,AR报表有一个sub叫ActiveReport_FetchData,它是在报表填充记录时发生的,可以实现你所需要的隐藏重复数据字段的功能。我想你的问题可以这样解决:
    1,用SQL得到记录集,其中包含你所要显示的所有字段,并以“案卷号”排序。
    2,把该记录集给AR。
    3,添加一个分组,并以“案卷号”来分组。(选中分组,分组属性列表中设置DataField属性为“案卷号”即可)
    4,在PageHeader(页首)或者报表首部(如有需要也要插入)添加你的报表眉即:====================================
    案卷号 事项名   时间       用户
    ====================================
    5,把groupheader(分组首部)的高度缩小到合适大小(试试即可)。
    6,在detail中添加你的数据字段。
    7,在groupfooter(分组脚部)添加一条虚线即:------------------------------------这时,预览的话,可以看到分组效果了,但是有的重复数据是重复显示的,
    要不重复显示,一般有两种常见的处理方法:一种就是把会与分组的那个字段同时重复的字段(比如这里的案卷号,日期,用户)都放到groupheader中,把其它不重复的字段放到detail中,当然为了美观要排一下版面。@_@ 再一种就是下面的(推荐! 可以非常自由控制显示与否.)8,使用FetchData(每条记录执行一次),在该过程中,你可能要用到几个Public变量(用来监视不需要重复显示的字段),用来保存正在填充到报表中的数据,每次执行都把某个字段的数据与相应变量中上次保存的数据相比较,如果相同的话,报表上的相应字段隐藏(这样就不会显示重复内容),不同的话就保存该字段到变量,并显示报表中的该字段。不知你理解没有,简单示例如下:Private Sub ActiveReport_FetchData(EOF As Boolean)
    If EOF Then Exit Sub
       
    If (Temp1 = DataControl1.Recordset(2)) Then
        ActiveReport1.Field1.Visible = False
    Else
        Temp1 = DataControl1.Recordset(2)
        'ActiveReport1.Field1.Visible = True  '如果不想用下面的GroupHeader1_Format()
                                              '的话,也可以启用本行.End IfEnd Sub
    Private Sub GroupHeader1_Format()
        ActiveReport1.Field1.Visible = True '本行保证每组的第一行总是全部显示.
    End Sub说明:上面的Temp1为全局变量,如果想要隐藏的字段重复与否与分组字段无关的话,可以多用几个变量来控制.如果还有疑问可以参考AR的帮助,或者继续讨论.From http://community.csdn.net/Expert/topic/3100/3100678.xml?temp=.2333643
      

  8.   

    是不是先要排好序再分呢?
    =========================
    按ID排好序,使记录的排列更清晰。 在SQL里加“ ORDER BY id”
    然后在报表ActiveReport1建个GroupHeader1,设置它的datafield属性, 如"id",detail填写正常的字段.
      

  9.   

    查询的时候排一下序 
    ORDER BY 姓名
      

  10.   

    我的报表内容是根据listview控件里显示的内容打印的,所以不能排序的