用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
我分出来如下:(根据姓名分组)原记录 分组后
-------------------- ------------------------
张三 10:00:00 张三
张三 11:34:23 张三 10:00:00
李四 12:07:45 张三 11:34:23
张三 12:34:22 李四
李四 12:07:45
张三
张三 12:34:22
解决方案 »
- 50分请高手帮我看一下这几行代码哪里代了?为什么啊?奇怪了
- COPY.ClipBoard_SetData Me!BB
- XSDA1 = "Instr(1," & Combo1.Text & ",'" & Trim(Text1.Text) & "')<>0 "的返回值是什么?
- 求助"文件"菜单中"打开"菜单项的代码.有急用.谢谢
- 有一定难度的一个问题?
- 一个关于media player 控件的问题
- 请问SQLAllocHandle在VB中的用法
- 纯vb开发的财务金额输入控件
- 回答问题者有分!!!!!!!!!!!!!!!!!!
- 跨域读取ACTIVEX
- 关于ACTIVE REPORT的问题!急!
- SetupFactory打包VB程序的时候,怎么把Crystal Reports 9的东西打进去啊?
请各位专家给一个解决方案好吗?能让我度这个难关!!!我把问题简单写一下,望各位ActiveReport高手明鉴啊-----→http://community.csdn.net/Expert/topic/3100/3100678.xml?temp=.4598657
我是这么做的呀,但是分组后结果就是象我说的那样,如果分组的字段内容连续相等的话分在一组,隔了一条不相等的记录的话,不会和前面的那个分在同一组。
GroupHeader1 datafield 姓名
在家一个field
detail 里面 添加
2个field
姓名,时间
一,分组功能:在设计页面上右击可以插入一个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
=========================
按ID排好序,使记录的排列更清晰。 在SQL里加“ ORDER BY id”
然后在报表ActiveReport1建个GroupHeader1,设置它的datafield属性, 如"id",detail填写正常的字段.
ORDER BY 姓名