尝试根据另一个字段的约束对公式字段求和



报告的一些背景:这是为在我们业务中工作的员工提供的生产力报告。我们根据与客户的访问时间来确定他们的生产力。我们的一些员工提供小组课程。他们向组内的每个客户收费,即使他们只提供例如一小时的服务,如果组中有 10 人,他们可以收取 10 小时的账单。我们通过服务代码确定他们提供的服务。

因此,我在此公式中有两个字段,一个服务代码字段和一个持续时间字段。

持续时间字段最初是数据库中的 STRING 字段,即使它只提供数字数据,所以我将其更改为 numberVar。服务代码字段也是一个字符串字段,有时确实包含字符和数字。

我需要水晶报告做的是取持续时间的总和。但是,如果服务代码是"1000",则必须先将持续时间除以 3,然后再求和。这就是我陷入困境的地方。

这是我在持续时间内的代码:

local numbervar num1;
If GroupName ({billing_tx_charge_detail.v_SERVICE_CODE})="1530" then 
    num1 := ToNumber({billing_tx_charge_detail.v_duration})/3
else num1 := ToNumber({billing_tx_charge_detail.v_duration})

然后我为总和做一个单独的公式,名为 sumDuration:

Sum(@duration)

我收到无法汇总此字段的错误。在谷歌上搜索了两天后,我发现Crystal无法汇总涉及常量的字段或公式。如果我简单地说:

local numbervar num1;
num1 := ToNumber({billing_tx_charge_detail.v_duration})

那么我可以总结@duration。我错过了什么?它一定是简单的东西,但我只是没有看到它。有没有办法创建一个自定义函数来完成我在这里想要达到的目标?还是比这更简单?

有人建议创建一个SQL命令,以便在数据到达报告之前进行计算。我是一个SQL新手,所以我甚至不知道从哪里开始。

如果按服务代码分组并将上述公式放在页脚中,则只会计算组中最后一条记录的 {billing_tx_charge_detail.v_duration}。如果您打算使用该公式并对结果求和并将结果放在服务代码页脚中,请尝试以下操作。(基本上删除对组名的引用(

If {billing_tx_charge_detail.v_SERVICE_CODE}) = "1530" then 
ToNumber({billing_tx_charge_detail.v_duration})/3 else
ToNumber({billing_tx_charge_detail.v_duration})

如果需要,可以使用变量 (num1(,但不需要它们。您仍然可以使用您引用的第二个公式并将其放置在组页脚中,或者您可以将第一个公式放在详细信息部分中右键单击并将摘要插入组页脚。如果需要,您也可以将其放在报表页脚中。

最新更新