0

报告的一些背景知识:这是一份为在我们公司工作的员工提供的生产力报告。我们根据与客户进行访问的持续时间来确定他们的生产力。我们的一些员工提供小组会议。他们向组内的每个客户收费,即使他们只提供例如一小时的服务,但如果组中有 10 人,他们可以按 10 小时计费。我们通过服务代码确定他们提供的服务。

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

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

我需要 Crystal Reports 做的是计算持续时间的总和。但是,如果服务代码是“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 新手,所以我什至不知道从哪里开始。

4

1 回答 1

0

如果您按服务代码分组并将上述公式放在页脚中,您将只计算组中最后一条记录的 {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),但不需要它们。您仍然可以使用您引用的第二个公式并将其放在组页脚中,或者您可以将第一个公式放在详细信息部分,右键单击并将摘要插入组页脚。如果您还需要汇总,也可以将其放在报告页脚中。

于 2016-02-12T21:06:55.010 回答