写在文章之前

在2005年4月的 《水晶报表自动补空行,补格线思路》一文中的最后,我有这么一句话
本文写得比较仓促,心里感觉不塌实
可能有不少不足之处,欢迎大家进行讨论

时隔近3年后,这个不踏实终于体现出来(其实之前可能已经有人提出来了,只是有相当长的时间我没有去关注。。。)
在Richard lee的留言中
http://www.cnblogs.com/babyt/archive/2008/01/27/138214.html#1054868
提到
我最近碰到财务的凭证报表问题
你的那个模板好用,可是每组的条数小于每张凭证的最大行数
假如一组的记录数大于每张凭证的最大行数,该如何处理?

我实际做了一下,我之前提供的方法对确实无法解决这种情况
而造成这种情况的原因,是我之前的文章中构造的数据不完备造成的
因为数据没有涵盖所有的情况
我是以5为分隔单位,但是我实质上全部构造了每组数据都小于5,但是对大于5,等于5的数据却没有构造
这也再次验证了测试不充分的害处

在本文中,我使用了与之前的方法不同的另外一种方法,相比之前的方式来说,更容易理解些
原来是靠多个详细资料节来实现的补充空格,现在,我们用组页脚的方式来补充,相比来说,这样是更合理的

本文,务必配合《水晶报表自动补空行,补格线思路》一文使用,虽然那个方案可以说是不对的

之前我在原来的基础上构造了数据,现在A组数据有8条数据,B是10条,C,D均少于5条,E刚好5条

1、首先我们画出模板,假设你也是显示5行,那么,就用一个详细资料节,然后,将组页脚拆分成4个
本例中,因为使用了一个固定的页脚显示合计,所以是拆分成5个的,最后一个节固定显示

这里使用了一个运行时总计字段 ,用以跟踪每条记录在组中的序号,组变更时,记录重新编号,用途在后面的说明。

为了直观些,我把这个字段拖到了界面上,实际操作时,你可以将这个字段抑制显示掉
模板中的红字是为了显示得更直观加上去的,实际使用时删除掉即可。

思路是这样的,如果一组数据,除以5剩余的部分,肯定是1、2、3、4,分别处理这几种情况
当剩余4条的时候,显示组页脚a,3的时候显示b,2的时候显示c,1的时候显示d,补满。
对于刚好5条的情况,在后面说明

特别注意:画线的问题。如果你不注意此接,你会注意到,你的线可能会乱七八糟
请注意!在出现分组的情况,或者需要根据需要进行运行时抑制显示控制时,务必将竖线,控制在一个节内,不可跨接。
注意竖线的节点只能出现在自己所在节的两个边界内,不可出现在边界外!
本文中的例子我偷了点懒,因为我知道什么时候会出问题什么时候不会,如果你不确定,请依照以上规则

2、分页控制
本例子有两种分页控制,一种是组分页,一种是一组数据大于5条时,每5条的分页
组分页可以在组页眉和组页脚上设置,本文中组页脚承担了另外的补空格任务,所以分页在组页眉上
增加一个公式

groupnumber mod 1=0


即每一个分组都换页

然后在详细资料节上设置公式,使每5条分一页

//此处需要注意
//因为我们在分组上已经加了一个分页了,这里是组内的辅助分页
//
//如果记录是5的倍数,则是分页时机,但是要另外注意
if {#RTotal0} mod 5 =0 then
    //如果此时是组内的最后一条记录,则此处不进行分页,因为会有一个组分页替换该
 if  Count ({材料采购明细.材料名称}, {材料采购明细.品牌}) ={#RTotal0} then
    false
 else
    true
else
    false

Count ({材料采购明细.材料名称}, {材料采购明细.品牌})  表示按组品牌分组后每组的记录个数
{#RTotal0}   表示当前的记录需要
用以跟踪每组的最后一条记录,用以处理如果刚好是5的倍数的时候,出现详细资料节与组出现重复分页的情况

3、设置补充行显示,以组页脚a为例子,当之前显示4条,需要补充1个空行时,此节显示

//组的最后一条记录
if Count ({材料采购明细.材料名称}, {材料采购明细.品牌}) mod 5>0 and Count ({材料采购明细.材料名称}, {材料采购明细.品牌}) mod 5<=4 then
    false
else
    true

其余各节依此类推

请在此处下载示例模板及数据库文件,将目录解压到E盘即可完整使用,CR9
http://files.cnblogs.com/babyt/20080128Crystal1.rar

本文从试验到最后成文花了我近两个小时的时间,不过对我来说也是个教训了,
另外,几年前的不踏实,也希望就此解决之

-EOF-
20070127

Tag标签: crystal report,水晶报表

转载于:https://www.cnblogs.com/chenyong677/archive/2008/10/10/1308087.html

《水晶报表自动补空行,补格线思路》 修正版 兼答Richard lee相关推荐

  1. 《水晶报表自动补空行,补格线思路》 【转】

    写在文章之前 在2005年4月的 <水晶报表自动补空行,补格线思路>一文中的最后,我有这么一句话 本文写得比较仓促,心里感觉不塌实 可能有不少不足之处,欢迎大家进行讨论 时隔近3年后,这个 ...

  2. 魔方自动还原程序3D版本和2D 修正版

    首先感谢大家的对上一个版本的鼓励. 这两天完成了魔方自动还原程序的OpenGL 3D版  源码下载:https://github.com/zhijie/MagicCube3D 同时修正了之前的2D版 ...

  3. 让Crystal Report【水晶报表】助你编程马到成功!

    注:这是我几年前的一篇稿件,欠妥之处,欢迎批评指正! 从事开发设计软件的朋友都清楚,在软件项目千头万绪中,唯有打印输出是要格外地仔细地推敲和认真实施:这"打印"乃是项目完成划句号前 ...

  4. 补一补上周的坑,关于校园网设置路由器自动登录

    补一补上周的坑,关于校园网设置路由器自动登录的. 首先,先得明白校园网登录认证的过程发生了什么,表面需要的是用户名和密码,但是其实不止这些,在浏览器(我用的是chrome)地址栏里输入校园网认证地址1 ...

  5. java 输入提示_Java实现输入自动提示与补全功能

    一. 场景与目标 在使用 IDE 开发软件时, IDE 会提供一种"智能提示", 根据所输入的字符列出可能的词组: 在日常Web开发中,根据用户输入进行自动提示和补全,也能很好地改 ...

  6. 水晶报表如何查看sql_amazon自动广告如何查看报表?怎么知道亚马逊的自然流量和广告流量分别是多少?...

    我做跨境电商也有六年的时间了,在电商这个行业也有自己的一些经验.经验也许没有其他大卖家丰富,但会将我知道的都进行分享.如果有不懂得亚马逊问题可以+我(V:772024802).我这里给大家安排一堂直播 ...

  7. 水晶报表常见问题整理之一(20050417)

    Q1:如何控制水晶报表在WEB页面上显示的大小?  1:水晶报表显示的大小不是以你内容的多少而是以报表纸型的大小为准的  所以你首先应该设置一个大小合适的纸型  http://www.cnblogs. ...

  8. 水晶报表--完美excel(上)

    很多人说水晶报表导出的Excel太难看,或者导出的Excel根本没法用,其实水晶报表是可以完整导出到Excel的 当然,水晶报表与其他基于CELL的报表工具相比,对Excel的支持是很弱的.而所谓的完 ...

  9. 【水晶报表内功心法】--完美Excel(上)

    本来这一篇要放到很后面去写,不过论坛里有人问到,就提前了. 很多人说水晶报表导出的Excel太难看,或者导出的Excel根本没法用,其实水晶报表是可以完整导出到Excel的 当然,水晶报表与其他基于C ...

  10. 只用最适合的! 全面对比主流 .NET 报表控件:水晶报表、FastReport、ActiveReports 和 Stimulsoft...

    原文:只用最适合的! 全面对比主流 .NET 报表控件:水晶报表.FastReport.ActiveReports 和 Stimulsoft 前言 随着 .NET 平台的出现,报表相关的开发控件随之出 ...

最新文章

  1. 数据库里存json数据
  2. android 滑动模糊渐变,Android UI效果实现 滑动模糊渐变效果实现
  3. linux 使cpu使用率升高_linux命令总结(二)
  4. Linux操作系统下DHCP服务器配置方法介绍
  5. 高性能缓存服务器Varnish详解
  6. linux-centos下源代码安装subversion (svn)
  7. 反向 Dropout,韩松团队最新工作NetAug:提高Tiny神经网络性能的新训练方法
  8. 减少主要GC暂停的频率
  9. linux安装汉语输入法,在linux中安装google拼音输入法
  10. java中文姓名排序_java中文排序
  11. 安装watchdog监控系统
  12. linux磁盘写保护怎么修改_磁盘被写保护怎么办_磁盘被写保护的解决方法 - 驱动管家...
  13. 李航《统计学习方法》第一章复习与习题参考解答
  14. Excel报表的导出
  15. Managed Beans
  16. (最新)天津各片区,各小区,各学校 对应关系,持续更新
  17. ImageMagick将多张图片拼接成一张图片_今天才发现,微信按下“这个”按钮,能将手机里的照片拼接成长图...
  18. PDF删除水印怎么在PDF编辑软件内执行
  19. Java OOP 异常
  20. 为什么Google优化排名前期要做长尾关键词?谷歌seo怎么做?

热门文章

  1. android音乐播放功能,Android开发中如何实现一个音乐播放器功能
  2. mysql查询一周内的订单_MYSQL查询一周内的数据(最近7天的) 怎么写
  3. 价值连城 神经网络- 吴恩达Andrew Ng Coursera Neural Networks and Deep Learning
  4. 极客大学产品经理训练营 产品思维和产品意识(上) 第3课总结
  5. 数据集:两种形式的铁离子在不同剂量下在动物体内的存留量
  6. mysql单机三实例_Mysql单机多实例
  7. 反射--获取构造器,获取父类,获取带泛型的父类,获取实现的接口,获取所在的包,获取注解
  8. vscode 头文件包含问题_VScode编译C++ 头文件显示not found的问题
  9. python统计中文字数_Python实现统计文本文件字数的方法
  10. nginx安装nginx-vts实现监控并打包镜像