【问题标题】:Crystal Reports 10: Nested FormulaCrystal Reports 10:嵌套公式
【发布时间】:2010-04-02 20:35:51
【问题描述】:

我有一份报告,其中显示了五个不同的活动代码。我想总结所有类似的代码,并将 5 个活动代码中的每一个放在一个组页脚中。我让它适用于一个活动代码,但想编写一个公式来查找所有五个并总计。这就是我所拥有的:

(如果 {@activitycode_id}= "未准备好" 则 {iActivityCodeStat.ActivityTime}else 0)

在一个公式中添加额外的 if 的正确语法是什么?然后将每一项加起来的最佳方法是什么?

谢谢!

【问题讨论】:

    标签: crystal-reports formulas


    【解决方案1】:

    我会这样做的两种方法是使用 switch 语句或使用运行总计。

    在这种情况下,您指定如果活动代码为“未就绪”,则使用 ActivityTime,如果您添加到此,它会将其他值合并到此公式字段中。也就是说,我认为这不是您要使用的方法。

    对于您想要的,我认为您更适合基于{iActivityCodeStat.ActivityTime} 创建一个运行总计字段,并且在“评估”部分您应该为每个状态使用一个公式,例如:

    {@activitycode_id}= "Not Ready"
    

    然后,当您将这些公式字段中的每一个放入组页脚时,您将看到活动代码为“未准备好”的那个部分的总计。不要忘记将运行总计设置中的“重置”部分设置为“组更改时”并选择该字段所在的组,以便您为每个部分获得不同的值,而不是运行总计所有部分。

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      if-then-else 语句的 if 位置,尝试 select-case 结构。

      Select {@activitycode_id}
      
      Case "Not Ready": {iActivityCodeStat.ActivityTime}
      Case "Sleeping": {iActivityCodeStat.ActivityTime}
      //else
      Default: 0
      

      如果您尝试单独汇总每个活动代码,您可以插入一个 CrossTab。

      如果您想要比 CrossTab 更大的灵活性,则需要有一个公式字段来隔离每个活动代码,以便单独汇总。例如:

      //{@Not Ready}
      If {@activitycode_id}= "Not Ready" Then {iActivityCodeStat.ActivityTime} Else 0
      
      //{@Sleeping}
      If {@activitycode_id}= "Sleeping" Then {iActivityCodeStat.ActivityTime} Else 0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多