【问题标题】:Crystal Reports formulas and how they run in different sectionsCrystal Reports 公式及其在不同部分中的运行方式
【发布时间】:2018-10-08 23:07:45
【问题描述】:

我查看了多个指南,但似乎没有一个关于何时将项目放入组页眉、详细信息和组页脚的良好指南。

一般来说,我的理解是将任何类型的总计放入适当的级别组页脚,因为页眉首先运行 -> 详细信息 -> 页脚。

我真的很困惑,因为我最近不得不设置一个更复杂的报告。我有三个表——“工作主”、“账单主(按工作编号连接)”和“成本核算主(按工作编号连接)”。我为“工作主管”工作编号设置了一个组,并尝试从其他每个表中提取帐单和成本核算。但是,无论我将信息(组页眉、详细信息或组页脚)放在哪里,都会出现一些错误。

我们尽快需要报告,所以我最终为账单制作了一个子报表,为成本核算制作了另一个子报表,并使用通用变量将内容从子报表中提取出来。这效率不高,运行时间很长,但数据是对的。我将子报表放在页脚中。

我确信可能有更聪明的方法可以做到这一点,但是当您需要从多个数据库中提取字段时,我似乎并不真正了解如何使用页眉/页脚/详细信息部分。有人有任何指示吗?谢谢!

【问题讨论】:

    标签: crystal-reports


    【解决方案1】:

    你的问题有点太宽泛了。如果你报告一个具体的案例,我相信你会得到更多的帮助。

    但我现在只能说,你可能已经自己想通了:

    1. 详细信息部分显示迭代数据。
    2. 页眉和页脚显示非迭代数据(在某种程度上,组页眉和组页脚除外)。

    如果您在这些部分中使用“运行总字段”并将它们与“汇总字段”进行比较,您会注意到重要的内容。我相信您会感到困惑,因为您应该在使用“汇总字段”的情况下出现“运行总字段”的行为,但我只是在推测。

    我不知道 Crystal Reports 是如何实现的,但这是我的心智模型,它可以帮助我理解这些部分的内容。

    1. 假设您有一个包含两个表格的报表,并且您没有子报表。
    2. 首先,Crystal 将加入您的餐桌。连接将根据您设置表之间链接的方式而定。如果您没有正确设置链接,您最终会得到表格的笛卡尔积,这可能意味着不需要的重复行。
    3. 此连接的结果是一个包含 N 行的“投影”。因此,对于每一行,它将打印一个“详细信息”部分。
    4. 因此,如果您将表格的一个字段(实际上是一列)放在详细信息部分,您将看到打印的值与您预期的一样。
    5. 但如果您将相同的字段放在页眉中,它将打印第一个匹配项。
    6. 但如果您将相同的字段放在页脚中,它将打印最后一次出现(不确定是否是最后一次)。
    7. 汇总字段将在对行进行迭代后计算。这意味着它们是在页眉还是在页脚并不重要——结果是一样的。因此,如果详细信息部分有 10 行,其中一列的所有行的值为 1,并且您创建一个汇总字段来汇总此列,则其结果在两个部分(页眉和页脚)中都是 10。
    8. 将即时计算运行总计字段。因此,如果详细信息部分有 10 行,其中一列的所有行的值为 1,并且您创建一个运行总计字段来汇总该列,则结果将在页眉中为 0,在页脚中为 10,如果您将此运行总计字段放在详细信息部分,它将显示该行的累计值(1、2、3、...、9、10)。
    9. 您可以对组页眉和页脚进行类似的思考。

    【讨论】:

      猜你喜欢
      • 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
      相关资源
      最近更新 更多