Crystal Reports和Viewer

时间:2010-08-17 21:55:49

标签: crystal-reports

所以我的问题是我创建了一个按经销商编号分组的报告。在这个组中,我创建了运行总计来总结每个经销商的数量,然后只显示他们的总量。我在组头中将所有变量重置为0。当我在CR中查看报告时看起来很好。但是通过观众或导出到excel -data只会显示正在运行的总数。似乎它在组头中没有重置为0。任何想法将不胜感激。如果它在CR中正确显示,可能问题只与观众有关吗?

在报告标题中:

whileprintingrecords;
global numbervar volume := 0;

组详情部分: 公式字段

if  Month({appl_trans.trans-dt}) = 1
and Year({appl_trans.trans-dt}) = Year(CurrentDate) then (
if previousisnull({contract1.contract-no}) then
    global numbervar volume := {contract1.cost-base};
if {contract1.contract-no} <> previous({contract1.contract-no}) then
    global numbervar volume := volume + {contract1.cost-base}
else
    global numbervar volume := volume
);

在群组标题中:

whileprintingrecords;
global numbervar volume := 0;

在组页脚:公式字段

whileprintingrecords;
global numbervar volume := volume;

1 个答案:

答案 0 :(得分:0)

您的变量使用过于复杂,CR可能会因此而做些奇怪的事情。完全摆脱报告标题中的公式 - 您已经在组头中重新初始化变量。接下来,将详细信息部分中的公式更改为以下内容:

whileprintingrecords;
global numbervar volume;
if  (Month({appl_trans.trans-dt}) = 1
and Year({appl_trans.trans-dt}) = Year(CurrentDate)
   and {contract1.contract-no} <> previous({contract1.contract-no}) then
        volume := volume + {contract1.cost-base}; 

将公式保留在组标题中。然后使用此公式在页脚中显示音量:

whileprintingrecords;
global numbervar volume;
volume

您通常只想为每个公式声明一个变量,这意味着只有一个“global numbervar x”,并且对于使用该变量的每个公式都要这样做。您也永远不需要为自己设置变量,因为它实际上不会做任何事情。

实现此目的的另一种方法可能比使用公式更简单,您只需添加一个Running Total字段来汇总{contract1.cost-base},评估{contract1.contract-no}的变化并在每个变量后重置组。或者另一种方法是在{contract1.contract-no}上添加另一个内部分组,并在组页脚中插入一个Summary字段。无论哪种方式都可以完成工作。