2010-08-17 88 views
0

所以我的问题是我创建了一个按经销商编号分组的报表。在这个小组中,我创建了总计来总结每个经销商的数量,然后只显示其总量。我将我的所有变量重置为组头中的0。当我在CR中查看报告时,它看起来很好。但通过查看器或导出为Excel数据只能显示持续运行总数。看起来好像它不在组头中重置为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; 

回答

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

你通常只希望每个公式一次声明一个变量,这意味着只有一个“全球numbervar x”和做它为每一个公式在使用这个变量。你也永远不需要为自己设置一个变量,因为它实际上不会做任何事情。

完成此操作的另一种方法可能比使用公式更简单,因为您可以只添加运行总计字段以总计{contract1.cost-base},评估{contract1.contract-no}的更改并在执行后重置每组。或者,另一种方法是在{contract1.contract-no}中添加另一个内部分组,并在组页脚中插入摘要字段。无论哪种方式将完成工作。

+0

我认为这与公式声明有关。感谢您的建议。但是这并没有解决问题。至于你的两个建议:#1先尝试了这种方式,但我必须为每个月的音量创建一个字段,我只是简单地解释了这个问题。我可以在正在运行的总字段中指定,对变化进行评估并在更改公式时重置以仅检索月份= x和年份=年份(当前日期)? #2可能工作,我仍然需要指定月份= x和年=年(当前日期)......任何想法如何实现?我难倒了 – 2010-08-18 14:38:01

+0

如果你想要每个经销商的每月交易量,你可以创建一个公式,如果年份是当前的话,可以从trans-dt返回该月份。然后,为每个月创建一个包含条目的数组数组,并在您的详细信息部分中有选择地更新它们(使用基于刚创建的月份公式的选择语句)。现在,在每个组页脚中,每个数组条目中的当前经销商都会有一个月的数量(我正在对您的数据模型进行一些假设)。 在这种情况下使用跑步总数的问题是,你每个月都需要一个,这很糟糕,但你可以做到。 – Ryan 2010-08-18 17:08:52

+0

是的,那可以解决。我会试试看。同样的呼吸,将以这种方式改变我的报告,与我现在所拥有的不同。我创建的是显示适当的值。看起来,当我在Cr Viewer中查看它或导出到Excel数据时,它显示不同的值,然后它在CR中。 – 2010-08-18 17:40:41