1

我正在水晶报表中寻找 Group1total 的值。我的背景更集中在 SQL 上,我试图确定以下背后的逻辑:

//{@Group1total}
whileprintingrecords;
numbervar group1cost

//{@Group1cost}
whileprintingrecords;
numbervar group1cost := group1cost + {@group2total}

//{@Group2total}
whileprintingrecords;
numbervar group2cost

//{@Group2cost}
whileprintingrecords;
numbervar group2cost := group2cost + {@group3total}

//{@Group3total}
whileprintingrecords;
numbervar group3cost

//{@Group3cost}
whileprintingrecords;
numbervar group3cost := group3cost + {@group4total}

//{@Group4total}
whileprintingrecords;
numbervar group4cost

//{@Group4cost}
whileprintingrecords;
numbervar group4cost := group4cost + {XVR_projectcostbudget.cost_budget}

我注意到在 SQL 中简单地对 XVR_projectcostbudget.cost_budget 求和并不会产生与 Crystal Report 相同的结果。有任何想法吗?

谢谢!

4

2 回答 2

4

WhilePrintingRecords 不会被翻译成 SQL。它只影响给定公式的计算——本质上是将其分配给报告的“通过”之一。请参阅Crystal Reports 9+ - 评估时间和多遍报告模型

在你的情况下,我建议:

  • 在所有四个组的页脚中插入公式或数据库字段的摘要;这将创建您可以在公式字段中使用的字段(您可以手动创建它们,但这更容易)
  • 创建一个根据需要对组摘要进行统计的公式字段
于 2013-01-04T20:55:07.603 回答
0

像贾斯汀一样,我可以感受到他对水晶报表的挫败感,并将其放在这里也可以帮助其他人。

试图用通常的 sum(decode( sql 结构。在水晶中试图使用运行总字段和评估公式来模拟这个。评估列是一个代码(所有值是数字,但表列声明为字符串类型:)。如果字段类型为数字,则评估公式仅提供“求和”功能。因此创建了一个公式字段来将此列生成为数字。很好,求和函数现在可用于运行总计与 IFF ( , 1, 0)。但不会产生结果!(即空白)

切换到 Whileprintingrecords 结构并开始工作。下面的文章简要介绍了它的工作原理。 http://crystalreportsblog.com/crystal-reports-running-totals/#comments

显然,将此计算放入主 sql 查询将是直截了当的,但带有 gui 表链接设置的旧报告。

于 2013-07-10T01:09:22.323 回答