首页 文章

Crystal Reports和Viewer

提问于
浏览
0

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

在报表头中:

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

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

    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};
    

    将公式保持在组 Headers 中 . 然后使用此公式显示页脚中的音量:

    whileprintingrecords;
    global numbervar volume;
    volume
    

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

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

相关问题