Crystal reports Crystal报告和查看器

Crystal reports Crystal报告和查看器,crystal-reports,Crystal Reports,所以我的问题是我已经创建了一个按经销商编号分组的报告。在这个组中,我创建了运行总计,以汇总每个经销商的交易量,然后只显示他们的交易总量。我在组标题中将所有变量重置为0。当我在CR中查看报告时,它看起来很好。但通过查看器或仅导出到excel数据,它只显示正在运行的总数。在组标题中似乎没有重置为0。如有任何想法,将不胜感激。如果查看器在CR中正确显示,问题可能只是查看器的问题 在报告标题中: whileprintingrecords; global numbervar volume := 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 := volume;
组内页脚:公式字段

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 := volume;

您的变量用法过于复杂,因此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}; 
您通常只需要为每个公式声明一个变量,这意味着只有一个全局数字V x,并对使用该变量的每个公式执行该操作。您也永远不需要将变量设置为自身,因为它实际上不会做任何事情


实现这一点的另一种方法可能比使用公式更简单,即只需添加一个正在运行的合计字段来求和{contract1.cost base},对{contract1.contract no}的更改进行评估,并在每个组之后重置。或者另一种方法是在{contract1.contract no}上添加另一个内部分组,并在组页脚中插入摘要字段。无论哪种方法都能完成任务。

我认为这也与公式声明有关。谢谢你的建议。然而,这并没有纠正问题。至于你的两个建议:我首先尝试了这种方法,但我必须为每个月的数量创建一个字段,我只是把问题简化了。我是否可以在“运行总计”字段中指定一个公式,即“更改时评估”和“更改时重置”,以便仅检索month=x和year=yearcurrentdate???2可能有效,我仍然需要指定month=x和year=yearcurrentdate的位置。。。你有什么想法可以实现吗?我是stumpedIf你想要每个经销商的月销售量,你可以创建一个公式,如果年份是当前年份,从trans dt返回月份。然后,创建一个数字数组,其中包含每个月的条目,根据刚刚创建的月份公式,使用select语句在“详细信息”部分选择性地更新这些条目。现在,在每个组页脚处,您将在每个阵列条目中获得当前经销商的月销售量。我正在对您的数据模型进行一些假设。在这种情况下,使用连续总计的问题是,你每个月都需要一个,这很糟糕,但你可以做到。是的,这是可行的。我会试试看。同样,威尔以这种方式修改我的报告,与我现在的报告有什么不同。我创建的是显示正确的值。似乎当我在Cr查看器中查看它或导出到Excel(仅数据)时,它显示的值与在Cr中显示的值不同。我不知道-您只需要做一些测试。试着做一个简单的总结和/或运行总计,看看导出到Excel时是否得到了正确的值。我怀疑这个问题与公式的计算和变量的更新有关。仅供参考,如果有人想知道或有同样的问题。我终于修好了。也很简单。我没有在页眉中重置变量,而是在页脚中将它们重置为0。嘘!