Crystal Reports使用共享变量实现主报表及子报表之间的数据共享

原创 2007年09月20日 14:24:00
在使用水晶报表子报表的时候,可能根据需要在主报表和子报表之间共享部分数据
如子报表需要依据主报表的某些数据进行运算等

因为主报表与子报表之间的数据是独立的,所以不能直接引用对方的字段等资源
有些朋友使用在代码中传递参数等方式来实现, 其实在水晶报表中已经有了问题的解决方法,那就是公式中的共享变量。

大家可能注意到了在水晶报表的公式中定义的变量是有作用域的 ,分别是Dim/本地(Local)/全局(Global)/共享(Shared)

使用水晶报表的共享变量(Shared)即可实现在主/子报表之间的数据共享
基本思路就是使用公式来进行相关对象的过度

帮助文档中是这样解释共享变量的

共享变量使用相同的内存块,在整个主报表及其所有子报表中存储变量值。
因而,共享变量甚至比全局变量更普遍。若要使用共享变量,请在主报表内的公式中声明它,如下所示:

Shared x 
As Number
= 1000

并在子报表内的公式中声明它,如下所示:

Shared x 
as Number

为使用共享变量,在共享变量可以在主报表和子报表之间传递之前,必须先声明该变量并给其赋值。

在下面的例子中,我们以在子报表中获取主报表中的一个数据为目标来进行演示
我们使用水晶报表的自带的数据库来做演示,在主报表中获取一定的数据
然后进行汇总
在子报表中获取这个汇总数据,

以下的公式,使用Basic语法
主报表中的公式如下
公式名称:@fMain1
公式内容:

Shared myTest1 as string 
myTest1
={产品.颜色} '此处可以替换为任意想获取的数据 
formula = myTest1 

将该公式应用到主报表的适当位置,如果不需要显示,可以抑制显示
不影响后续数据的获取

子报表中的公式为:
公式名称:@fSub1
公式内容为:

Shared myTest1 as string 
formula
=myTest1 

将公式应用到子报表的适当位置,即可显示出主报表的内容

 

一个crystal report水晶报表无法实现的多数据源计算

项目背景:用户新上线了绩效考核系统,原本的工资算法需要相的调整。以前的工资表主要由员工的基本工资计算得到,基本工资存储在财务管理软件的MSSQL数据库中。新的工资表由基本工资+绩效工资组成。绩效工资由...
  • u012388497
  • u012388497
  • 2014年01月13日 13:54
  • 1605

为水晶报表(含子报表)绑定数据

本Demo为http://topic.csdn.net/u/20111202/11/4965b533-3102-410f-8de0-9a0eedada681.html?55467 提供。  我们...
  • SunCherryDream
  • SunCherryDream
  • 2015年05月05日 17:56
  • 1185

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相

VS2010下水晶报表的使用总结-从安装到使用到部署,有图有真相。 公司要做一个有关水晶报表的打印,让我自己研究怎么使用,整整折磨我好几天。做了有关winform和Web两种方式的。我的开发环境是V...
  • ping0926
  • ping0926
  • 2013年05月31日 14:03
  • 2689

水晶报表教程:手把手教你制作基本报表

标签:水晶报表 概述:本文手把手教你制作最基本的水晶报表。 水晶报表教程:发票套打水晶报表教程:手把手教你制作基本报表水晶报表教程:动态传递参数水晶报表教程:C#中创建水晶...
  • pk52020081
  • pk52020081
  • 2015年05月11日 09:42
  • 5249

使用ireport制作报表,父报表传参给子报表

ireport是一款开源的报表可视化设计器,其是由java语言编写,能够输出PDF、XLS、XML、DOC等,是一款很好的报表设计软件,编译生成的jasper文件可以直接进行使用。关于更多irepor...
  • qq_21050783
  • qq_21050783
  • 2017年01月19日 09:51
  • 446

Crystal Reports 报表处理模型

Crystal Reports 使用三个处理环节生成报表的方法来生成报表。下图部分描述在此过程中的每一步所发生的情况。      注意: 尽管子报表在流程图的处理环节2 中出现,但可以使用按需显示子...
  • liyi199488
  • liyi199488
  • 2013年07月31日 09:19
  • 771

iReport专题学习之子报表(SubReport) 07

一、SubReport简介
  • u014548782
  • u014548782
  • 2014年04月08日 22:41
  • 5512

IReport的子报表设置

通过iReport可以方便的设计Jasperreport报表,其中的子报表功能给报表设计带来很大的便利,不过iReport的Guide中对subreport的设计描述并不详尽,通过摸索后做了一些总结。...
  • ITRanen
  • ITRanen
  • 2014年12月30日 10:14
  • 1300

ireport解决子报表重叠问题

当一个主报表里包含多个子报表,子报表内部高度不确定时,如果子报表都放在detail里,往往会出现子报表重叠问题。 解决办法:为每一个子报表分别添加一个group,注意子报表高度不要太高,容易出现后面...
  • Giving_bestself
  • Giving_bestself
  • 2017年06月10日 18:10
  • 945

iReport 报表、子报表、主从报表、合计、实例解析

开发使用步骤(iReport 4.1.1) 1.      开发使用步骤(iReport4.1)... 2 4.1.       JasperReport 和iReport的介...
  • weisong530624687
  • weisong530624687
  • 2014年08月15日 16:07
  • 1701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Crystal Reports使用共享变量实现主报表及子报表之间的数据共享
举报原因:
原因补充:

(最多只允许输入30个字)