水晶报表分组分页且每页最多显示N条记录

本文为解http://topic.csdn.net/u/20111128/10/041ccade-1fa9-4bb2-b1ad-72430b233a97.html?50470所作
先确认下原帖需求:
1、详细节最多5条记录(不能超过5条);
2、无论前一组是否满5条记录,每个新组都要另起一页
主要就这两点。


我们知道每页最多显示N条的控制方法,打开节专家,在详细节后面新建页公式编辑:
RecordNumber mod N = 0

RecordNumber即记录数,无论分组与否,是自动随记录递增的,所以在这里,我们不能用RecordNumber,而应该是在每个新组前要重置这个RecordNumber,用这个重置的RecordNumber来取模控制每页最多显示5条记录,于是我们很自然就想到了运行总计字段,由它来帮我们重置RecordNumber,这样我们应该就很明朗了,接下来让我们一起去设计模板:

报表按ID分组就不用再提及了吧?(右击报表空白处->插入->组)
首先新建一运行总计字段,如图示


该运行总计字段就是为了重置RecordNumber,模板设计好后应该是这样的,如图示


就这样是达不到我们需求的,我们还要为它处理下:)
针对需求1,我们的处理方案是


针对需求2,与需求1同理,只不过此时我们是在#组尾(组页脚)节后面新建页的公式编辑:
Not OnLastRecord


OnLastRecord意指最后一条记录,Not OnLastRecord自然是非最后一条记录,在这里就是指非最后一条记录时就在后面页新建页,最后一条记录时就不用再新建页了。若不用该公式控制的话,报表的最后一页总是空白页(没有详细节数据)
原帖还有一个小需求:在第一页的ID后自动加-(1),第二页ID后自动加-(2)
其实应该是在每个#组头(组页眉)处显示 "ID:" + ID值   而已:)
这样我们只需把分组后的组名自定义一下即可,如图示:

由于这边的ID是数字型,所以用ToText函数把它转成字符型,后面的参数0表示保留0位小数(即不保留小数)

 

本文的重点是在模板的设计,代码就不晾出来了

=========================================================================================================================

Modified @2011-11-29 21:45

前文提及的小需求:在第一页的ID后自动加-(1),第二页ID后自动加-(2)

本人理解错了,应该是组内页码重置,抱歉~  

其实泰哥这篇【分享】水晶报表组内分页已经做到这个效果了,但不知道为什么我这竟然没有找到RoundUp函数,所以修改下泰哥原文公式x1的内容如下:

//每个组的总记录数
NumberVar groupRecordCount := Count ({DataTable3.Type}, {DataTable3.ID});

//每个组的总页数 
NumberVar groupPageCount := groupRecordCount / 5;
If Int(groupPageCount) <> groupPageCount Then
(
  groupPageCount := Int(groupPageCount) + 1
);

//重置后的RecordNumber
NumberVar groupRecordNumber := {#RTotal0};

//组内当前页
NumberVar groupPageNumber := groupRecordNumber / 5;
If Int(groupPageNumber) <> groupPageNumber Then
(
  groupPageNumber := Int(groupPageNumber) + 1
);

//最终报表界面显示
'第' + ToText(groupPageNumber, 0) + '页 / 共' + ToText(groupPageCount, 0) + '页'
 
//说明:Int函数是取整函数,如Int(1.2)=1; Int(1.9)=1
//写好后将该公式字段拖放到#组头(组页眉)节即可
  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 水晶报表是一种高效的报表生成工具,常用于VB编程中。它是由SAP公司开发的一款报表生成工具,具有丰富的功能和灵活的设计方式。水晶报表可以通过VB编程来实现数据与界面的交互和报表的生成。 使用水晶报表可以实现以下功能: 1. 数据源连接:水晶报表可以连接多种类型的数据源,包括数据库、Excel文件等,可以灵活地获取和处理数据。 2. 报表设计:水晶报表提供了丰富的设计工具,可以设计各种样式和格式的报表,包括表格、图表、图像等,使报表具有良好的可视化效果。 3. 数据过滤:水晶报表提供了数据过滤的功能,可以根据用户的需求对数据进行筛选和过滤,进一步精确地展示所需的数据。 4. 报表导出:水晶报表支持多种报表导出格式,包括PDF、Excel、Word等,可以方便地将报表导出和共享给其他人员查看。 5. 报表打印:水晶报表可以实现报表的打印功能,用户可以根据需要选择不同的打印设置,以便满足不同的打印需求。 在VB编程中,使用水晶报表可以通过引用相应的报表生成库来实现,然后在代码中进行相应的配置和调用。首先,需要设置数据源连接,然后设计报表的样式和格式,并通过编程来实现数据的筛选和处理。最后,可以调用水晶报表的导出和打印功能,实现报表的最终生成和输出。 总而言之,水晶报表是一种功能强大的报表生成工具,适用于VB编程中,具有丰富的设计和功能特点,可以提高报表的生成效率和质量,使报表呈现更加直观和精确。 ### 回答2: 水晶报表是一款可用于VB(Visual Basic)开发环境的报表生成工具。它基于SAP的Crystal Reports技术,可以生成各种类型的报表,如销售报表、财务报表、员工考勤报表等。 使用水晶报表,我们可以通过在VB环境中添加相应的控件,轻松地创建和设计报表。首先,我们需要连接到数据库,并获取所需的数据。然后,我们可以选择报表布局和样式,包括报表的标题、页眉、页脚、表格、图表等,以展示数据结果。 水晶报表提供了丰富的数据处理和分析功能,比如数据筛选、排序、分组、汇总等。我们可以根据需要进行数据过滤,对数据进行排序,根据特定字段对数据进行分组,并在报表显示数据的总计、平均值等统计信息。 生成的报表可以以多种格式输出,如PDF、Excel、Word等,方便与他人共享和打印。水晶报表还支持报表的导出和打印设置,可以自定义页面尺寸、页眉页脚、打印布局等,以满足个性化需求。 在VB环境中使用水晶报表,我们可以轻松地生成具有专业外观和易于阅读的报表,帮助我们更好地分析和展示数据。无论是在企业管理、销售分析、财务报告等领域,水晶报表都是一个非常有用的工具,能够提高我们的工作效率和数据分析能力。 ### 回答3: 水晶报表是一款功能强大的报表工具,用于在VB(Visual Basic)中生成、显示和打印各种格式的报表。它提供了丰富的报表设计功能和交互性,可以轻松地生成复杂的报表。 使用水晶报表需要先安装并配置相关的组件,在VB中引用这些组件,并通过相应的编程接口来调用水晶报表的功能。通过编程接口,我们可以设置报表的数据源、设计报表的布局和样式,以及生成报表的预览和打印。 在报表设计中,我们可以使用水晶报表提供的图形界面工具来创建报表模板,包括添加数据字段、设置报表的标题、页眉、页脚等。我们还可以添加图表、子报表、交叉表等更复杂的报表元素来满足特定的报表需求。 在运行时,我们可以通过编程接口来动态地设置报表的数据源,将数据源中的数据填充到报表中的相应位置。我们还可以通过编程操作来修改报表的样式和内容,以及添加页眉、页脚和页码等。 水晶报表还提供了丰富的导出功能,可以将报表导出为多种格式,如PDF、Excel、Word等,方便与其他系统或人员共享和使用。 总而言之,水晶报表是VB中一款功能强大的报表工具,能够帮助我们轻松地生成、显示和打印各种格式的报表,提高工作效率,并且具备丰富的报表设计和导出功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值