0

报表上的一些背景SUM基于约束的公式字段: 这是对我们的员工在我们企业工作的生产率报告。我们根据客户访问的持续时间来确定他们的生产力。我们的一些员工提供小组会议。他们向小组内的每个客户收费,即使他们只给予例如一小时的服务,但如果小组中有10人,他们可以支付10小时的费用。我们确定他们通过服务代码提供的服务。试图从另一个领域

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

持续时间字段最初是从数据库中一个字符串字段,即使只给数量的数据,所以我将其更改为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) 

我得到这个字段不能概括的错误。在Google搜索了两天之后,我发现Crystal无法总结涉及常量的字段或公式。如果我简单地说:

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

然后我可以总结@duration。我错过了什么?它必须是简单的,但我只是没有看到它。有没有办法创建一个自定义函数来完成我想要获得的内容?或者它比这更简单?

一个人建议,为了做到计算之前的数据获取到报告创建一个SQL命令。我是一个SQL新手,所以我不知道该从哪里开始。

回答

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)。 您仍然可以使用您引用的第二个公式,并将其放在组页脚中您可以将第一个公式放在详细信息部分中,右键单击并将摘要插入到组页脚中。如果您需要它也可以放置在报告页脚中,那么也可以在报告页脚中显示。

+0

这工作就像一个魅力。除了3之后,我在声明中加入了“else”。所以引起我的麻烦的唯一原因是引用了组名?哇。 另外,如果我要引用几个服务代码而不是仅仅1530,那么我可以简单地通过添加AND或OR关键字来完成此操作吗?还是CR有一些特殊关键字用于在条件中包含多个值? –

+0

{billing_tx_charge_detail.v_SERVICE_CODE})在( '1530', '1531', '1532', '等等...') – CoSpringsGuy

+0

{billing_tx_charge_detail。('1530','1531','1532','等等')中的'v_SERVICE_CODE} – CoSpringsGuy

相关问题