我有一个带有公式字段的串扰。查询返回类似的东西

 CategoryID   Company       MarketValue   PaymentMode
  1            ABC             1000         H
  1            xyz             2000         H
  3            efg             9800         H

付款模式由“ H”指示半年,我制作了一个公式字段,以评估付款模式

WhileReadingRecords;
numberVar mode;  
         if({PaymentMode}='H') then mode:=2 else mode:=12

然后我做了另一个公式字段

WhileReadingRecords;
numberVar mode;
numberVar result:={MarketValue}/mod;
result

但是,它以零错误返回划分。为什么我的付款模式公式无法正确评估。我尝试将付款模式公式放在报告头和Cross Tab中是第二个标题,但仍会引发相同的错误。

有帮助吗?

解决方案

两个问题。

第一个语法错误 - 或者更确切地说是错字,最后“ e”丢失了:)

numberVar result:={MarketValue}/mode;

第二 - 您需要按指定顺序评估构成。说您的第一个公式具有名称为“ Calc_mode”,然后第二个公式应从下一步声明开始:

EvaluateAfter({@calc_mode});

其他提示

我很高兴您已经找到了Arvo的答案,但是我有一些建议可以简化您的代码:

  1. 模式 是一个Buit-In Crystal功能(请参阅Crystal的帮助文件)。因此,当我看到您使用该单词作为自定义变量的名称时,我的大脑会进行反弹。如何称呼它为“ numpayperiods”?

  2. 由于您的样品公式包括字段值,因此晶体工具 虽然记录 默认情况下(再次,请参阅Crystal的帮助文件)。因此,在这种情况下,添加它是多余的。您可以完全将其取出。

  3. 在您的示例中,无需2个单独的公式。另外,你 结果 在晶体语法中不需要变量。您可以将整个内容简化为1个公式:

    if({PaymentMode}='H') then
    {MarketValue}/2
    else
    {MarketValue}/12;

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top