Crystal Reports公式及其在不同部分中的运行方式

时间:2018-10-08 13:00:45

标签: crystal-reports

我浏览了多份指南,但是似乎没有一个关于何时将项目放入“组页眉”,“详细信息”和“组页脚”的良好指南。

通常,我的理解是将任何类型的总计放入适当的级别组页脚中,因为标题首先运行->详细信息->页脚。

我真的很困惑,因为我最近不得不制定一份更复杂的报告。我有三个表-“作业主”,“计费主(由作业号连接)”和“成本核算主(由作业号连接)”。我为“作业主管”作业编号设置了一个组,并尝试从其他每个表格中提取帐单和费用。但是,无论我将信息放在何处(组页眉,详细信息或组页脚),其中某些信息都是错误的。

我们需要尽快获得报告,因此我最终为帐单制作了一个子报表,为成本制作了另一个子报表,并使用通用变量将内容从子报表中取出。这效率不高,并且运行时间很长,但是数据正确。我将子报表放在页脚中。

我确定可能有一种更聪明的方法来执行此操作,但是当您从多个数据库中提取字段时,似乎我并不真正理解如何使用页眉/页脚/详细信息部分。有人有指针吗?谢谢!

1 个答案:

答案 0 :(得分:0)

您的问题有点太广泛了。如果您举报特定案件,我相信您会获得更多帮助。

但是我现在可以说的是,您可能已经认识到了您自己:

  1. “详细信息”部分显示迭代数据。
  2. 页眉和页脚显示非迭代数据(但不包括组页眉和组页脚)。

如果您在这些部分中使用“正在运行的总计字段”,并将它们与“摘要字段”进行比较,则会发现重要的内容。我相信您很困惑,因为您曾期望使用“汇总字段”时出现“运行总计字段”的行为,但我只是在推测。

我不知道Crystal Reports是如何实现的,但是这是我的思维模型,可以帮助我理解各节中发生的事情。

  1. 假设您有一个包含两个表的报表,并且没有子报表。
  2. 首先,Crystal将加入您的表。联接将取决于您如何设置表之间的链接。如果未正确设置链接,则最终将得到表的笛卡尔积,这可能意味着不希望有的重复行。
  3. 此联接的结果是具有N行的“投影”。因此,对于每一行,它将打印一个“详细信息”部分。
  4. 因此,如果在详细信息部分中放置表格的一个字段(实际上是一列),则会看到印刷的值,就像您可能期望的那样。
  5. 但是,如果在页面标题中放置相同的字段,它将打印出第一个匹配项。
  6. 但是,如果在页面页脚中放置相同的字段,它将打印最后出现的内容(不确定是否是最后一个出现的内容)。
  7. 汇总字段将在迭代行后计算。这意味着它们是否在页眉或页脚中都没有关系-结果相同。因此,如果详细信息部分有10行,其中某列所有行的值均为1,并且您创建了一个摘要字段以对该列求和,则其结果在两个部分(页眉和页脚)中均为10。 / li>
  8. 正在运行的总计字段将即时计算。因此,如果详细信息部分有10行,其中某列所有行的值均为1,并且您创建了一个运行总计字段以对该列求和,那么结果将在页眉中为0,在页脚中为10,并且如果您将此运行总计字段放在明细部分中,它将显示该行(1、2、3,...,9、10)之前的累计值。
  9. 您可以类似地考虑组页眉和页脚。