2019-1-16水晶报表技巧总结

第一条:合计问题,包括汇总或者是简单数量合计或者是页面行数的统计或者是页面数的统计等...

说简单点,就是3个公式
AmountReset 用于清空页合计
RunningTotal 用于累加页合计
AmountDisplay 用于显示页合计.

在“字段资源管理器”对话框中选择“公式字段”,然后单击“新建”。
将公式命名为“RunningTotal”,然后单击“使用编辑器”。
出现公式工作室,公式编辑器处于活动状态。
将以下内容输入“公式”框:
WhilePrintingRecords;
CurrencyVar Amount;
Amount := Amount + {订单.订单金额};

在公式工作室中创建“AmountReset”:
WhilePrintingRecords;
CurrencyVar Amount := 0;

在公式工作室中创建“AmountDisplay”:
WhilePrintingRecords;
CurrencyVar Amount;
该公式可用于随时显示 Amount 变量的当前值。

第二条:关于抑制显示,在【详细资料】中,有些字段不想在一些页面显示出来,可抑制显示这些字段,在后面的公式中添加:

pagenumber=1

后面的数字,可以是一个范围,填写什么数据,就抑制在那页的显示或者是那些页的显示。

第三条:分页问题,有按组分页或者按行分页或者分组后按行分页

按组分页:
直接在【节专家】中选择,组尾,在选择【在后面页新建页】即可。

按行分页:

在以下内容之前新建页:

IF Remainder (RecordNumber, PageNumber*5+1 )=0 then
True
Else
False
这是5行一页
在后面页新建页:
if onlastrecord then
false
else
if RecordNumber mod 10 =0 then
true
else
false
这是10行一页
后面一种方法好一点,前面可以因为总行数不同分的不整齐。

按组按行分:
【在后面页新建页】【在以下内容之前新建页】这两个地方填写公式是不一样的
报表使用了分组,一个组的数据会跨好几页,要单独显示某组显示到【第几页/共几页】
效果类似于:

这是一个综合工程,我们要逐步来拆解一下。

本文使用水晶报表2008操作,其余版本类似。

1:首先,是按照某个字段来分组
这个就不多说了,我用的是水晶报表自带示例库的产品表,用颜色字段进行分组。

2:每页显示5行数据,且每页的上都要显示组页眉,不同的组不能显示在同一页上。也就是组和组之间是的分离

(1)每页显示5行设置

如果是CR2008之前的版本,使用公式 RecordNumber Mod 5=0
(2)每组上都要显示组页眉

(3)每个组单独占一页,不混合显示。
也就是1页显示5行,如果组a有1行,组b有2行,他们要分别占据1页,而不是合在1页上显示。

如果是CR2008之前的版本,使用公式 GroupNumber Mod 1=0  

3:使用运行时总和为每组数据单独编号

把这个运行总和字段做到模板上看看效果。分别拖到详细资料节和组页眉

可以看到,放在组页眉上的序号,其实就是在该页上第一条记录在组内的序号。

4:组内分页基本原理

现在我们能拿到单独的组内序号了,那么,怎么去用来分页呢。
想一下,假设我们每组记录数目为N(当然,N是变化的),如果存在多页的话,因为是5行一分页
那么对一个组来说,每页第一条的序号分别为1、6、11.。
也就是【5的倍数+1】。

那么我们的公式其实就出来了,
我们以每页组页眉上的那条为基准,也就是每页的第一条为基准,序号 除以 5,取整再 +1 即可。

公式如下

针对以的代码,找不到Roundup,重写:
numbervar x1;
numbervar x2;
numbervar p1;
numbervar p2;
//x1是每个组的数据条数
x1:=  Count ({ DataTable3 .Job_No},{ DataTable3 .Job_No});
//得到总页码
p1:=round(x1/16+0.4);
//得到当前行组内序号,其实就是换后第一条的序号
x2:={#RTotal0};
//用序号外以每页的条数16,得到当前页码
p2:=round(x2/16+0.4);

if p2=0 then p2:=1;

totext(p2,0) +‘ / ‘ +totext(p1,0) 

效果如下

公式中的几个点特别说明一下
Count(字段,分组字段) 表示组小计计数
RoundUp(x)是向上取整,比如x=5则为5,5.1则为6.

第四条:公式显示页码

‘第‘+ToText(PageNumber,0)+‘页,共‘+ToText(TotalPageCount,0)+‘页‘

这是可以显示总有几页,现在是第几页

  

  

原文地址:https://www.cnblogs.com/liuqifeng/p/10275423.html

时间: 2024-08-10 06:04:31

2019-1-16水晶报表技巧总结的相关文章

2019-1-17水晶报表技巧总结【2】

第一条:水晶报表分组分页且每页最多显示N条记录 要求:1.详细节最多5条记录(不能超过5条):           2.无论前一组是否满5条记录,每个新组都要另起一页            3.可以显示组内分页的情况,即:显示一个组被分为几页并且当前是第几页 我们知道每页最多显示N条的控制方法,打开节专家,在详细节后面新建页公式编辑:RecordNumber mod N = 0 RecordNumber即记录数,无论分组与否,是自动随记录递增的,所以在这里,我们不能用RecordNumber,而

C# 用vs2008连接SQL数据库做动态水晶报表

博主是个还在上大学的新手,如果有什么说错的地方请务必帮我指出来,谢谢! 想要完成一个能够动态改变其中数据的水晶报表,可以通过创建一个 数据的中转站来存储和输出数据的方式. 借由这个中转站,我们可以通过为它动态输入数据,然后再将数据导出到水晶报表,来达到得到有动态数据的水晶报表的目的. 仅在vs2008中,很多它自带的应用也可以达到中转站的作用,比如数组,数据集等. 博主最近刚在学SQL所以尝试了用VS连接数据库来做水晶报表. 1.首先,博主在SQL中创建了名为xxs的数据库,然后再在数据库xxs

(转)VS2010结合水晶报表做条码标签打印功能

本文转载自:http://blog.sina.com.cn/s/blog_552ca1400100y6dd.html 先来个功能效果图: 大家都知道VS2005和VS2008软件本身是包含水晶报表插件的,而新版本的VS2010去掉了SAP水晶报表的插件,想要在VS2010中使用水晶报表首先要下载SAP的插件CRforVS_13_0.exe,我这下载的是13版本的. 下载完成后安装,现在就可以在VS2010里面使用了,哈哈. 1.准备工作,条码实现 具体如何实现条码,这里不再赘述,详细请参考:ht

Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用的相关jar包. 接下来,就可以进行数据库的一些连接操作了. 对JDBC不是很了解的,可以到 完整java开发中JDBC连接数据库代码和步骤 了解相关的操作 1.打开Crystal Reports的数据专家 2.点击JDBC(JNDI)出现: 3.输入url和数据库类名,点击下一步: 4.输入pas

WinForm 水晶报表的简单使用

今天需要做出一个水晶报表, 以前在学校的时候就看过一点点,有些印象, 但没有具体的了解过,今天百度了一下,发现这个东西相当的方便简单. 还很完美. 开发工具是VS2010,水晶报表没有内置.需要自己下载. 网上有很多,结尾处的参考文章地址中也有. 需要注意的有两点: 1VS2010运行环境默认为.NET FRAMEWORK 4.0 CLINET PROFILE,要改为.NET FRAMEWORK 4,选中项目右键属性就可以更改了: 2.在项目中加一个APP.CONFIG(这是针对WINFORM项

Asp.Net中使用水晶报表

Asp.Net中使用水晶报表(上) 在我们对VS.Net中的水晶报表(Crystal Reports)进行研究之前,我和我朋友对如何将这个复杂的东东加入我们的Web应用有着非常的好奇心.一周以后,在阅读了大量的“HOWTO”文档之后,我们成功地将一些简单的报告加入到了我们的Asp.net程序中,并得到了一些小决窍. 这篇文章教你如何在.Net Web应用中使用水晶报表,也可以让你在学习过程中少走一些弯路.为了得到最好的效果,读者最好需要有一些基础的Asp.Net访问数据库的知识以及使用VS.Ne

水晶报表导出文件的格式设置

原文:水晶报表导出文件的格式设置 水晶报表中自带的导出和打印功能用起来确实很方便,只不过有时候需要导出的文件并不需要那么多种类型,在网上找到一些朋友的代码总结了一下,可以通过代码实现自定义导出文件类型 首先需要定义一个枚举: public enum AllowedExportFormat { /// <summary> /// PDF. /// </summary> PDF = 1, /// <summary> /// Excel(97-2003) /// </s

从ASP.NET传递参数给水晶报表

上次Insus.NET有简单写了一篇文章<Visual Studio 2012使用水晶报表Crystal Report> http://www.cnblogs.com/insus/archive/2013/05/22/3090786.html此篇只是简单介绍了Visual Studio 2012可以方便是以快捷安装Crystal Report了,Crystal Report的创建与显示于ASP.NET网页上. 今天Insus.NET 想跟大家分享的是从ASP.NET网页传递参数给水晶报表. 首

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

原文:只用最适合的! 全面对比主流 .NET 报表控件:水晶报表.FastReport.ActiveReports 和 Stimulsoft 前言 随着 .NET 平台的出现,报表相关的开发控件随之出现,目前已经有若干成熟的产品可供开发人员使用,本文旨在通过从不同维度对比目前最流行的4款 .NET报表控件,给所有报表开发人员在做产品选型时一份全方位的参考. 为什么需要报表控件 数据报表,作为商业系统中必不可少的功能(或者成为模块),随着这些年大数据.BI.数据决策的流行,数据报表也逐渐成为商业系