【发布时间】:2020-06-09 06:43:33
【问题描述】:
我正在使用 Crystal Reports 2016。我没有用它做很多工作,我所做的大部分工作都在我的管理下,但遇到了一个我似乎无法找到解决方案的问题。
作为一个组织,我们有客户承诺每月捐赠一定金额。我需要写一份报告,其中显示有多少客户提供的金额高于、等于或低于他们的承诺金额。
通过使用共享变量创建运行总计,我设法解决了运行总计因“总和”或“不同计数”而无法工作的问题。但是现在我遇到了一个障碍,公式都可以按照我的意愿工作,除了变量在报表页脚中添加了最后一行数据两次。
我已经进行了各种 Google 搜索并尝试了一系列建议,包括将某些公式从“WhilePrintingRecords”切换到“EvaluateAfter”,但我所做的似乎没有改变最终计数。
以下是我的公式示例及其在报告中的位置。请注意,这些不会重置,以便我获得最终总数。
位于组页脚 1a)
@Pledge 与实际:
WhilePrintingRecords;
If (Shared CurrencyVar Amount) = {Pledge.field} then ToNumber ("1") // 1 is where pledge and payments are "Equal"
else if (Shared CurrencyVar Amount) > {Pledge.field} then ToNumber ("2") // 2 is where payments are "More" than pledge
else if (Shared CurrencyVar Amount) < {Pledge.field} then ToNumber ("3") // 3 is where payments are "Less" then pledge
这个公式只是为了确定某人是否提供了更多、等于或少于他们的承诺,以便我可以根据该标准评估数据。对于“更多”和“更少”标准,我有与以下示例中相同的公式。
@EqualAmount1:
WhilePrintingRecords;
Shared CurrencyVar EqualValue1;
EqualValue1 := If {@Pledge vs Actual} = 1 then Shared CurrencyVar Amount;
如果相关客户在给定时间段内捐赠的金额加起来等于该金额(使用客户记录的共享 CurrencyVar 金额公式求和,即为第 1 组)。
位于组页脚 1b)
@EqualAmount2:
WhilePrintingRecords;
Shared CurrencyVar EqualValue2;
EqualValue2 := EqualValue2 + {@EqualValue1};
这给出了到目前为止给定的所有客户金额的总和,例如 50 英镑 100 英镑 100 英镑 100 英镑 150 英镑 150 英镑 200 英镑 250 英镑
位于报表页脚
@EqualAmount3:
Shared CurrencyVar EqualValue3;
EqualValue3 := {@EqualValue2};
我认为这将简单地显示通过上述公式获得的最终金额,如果这是最后一行,则为 250 英镑,但它再次添加最后一行,例如赚 300 英镑。
这是我第一次使用变量,所以几乎肯定错过了一些非常非常简单的东西。因此,任何指导将不胜感激。
更新: 好的,所以按照赫林格的建议做了,一切都很好;我也可以使用相同的公式来生成承诺金额的运行总计,但我现在再次陷入困境,因为我无法为捐赠的总金额创建运行总计。
我的意思是,在报告的底部,我需要说明以下内容:
10 位客户的捐款超过了他们的承诺 - 他们承诺了 100 英镑,并且 总共给了200英镑。 50 位客户做出了他们的承诺——他们 承诺并捐赠了 500 英镑。 5 位客户的承诺低于他们的承诺 - 他们 认捐 200 英镑,捐出 100 英镑。
因此,我可以在这些句子的前两部分出色地使用 Running Totals,但最后一点 - 他们的捐款总和 - 不能使用相同的 Running Totals 公式完成,因为客户可能有多个订单行, 相加显示客户给出的总数。
这是我的报告到目前为止的样子:
因此,例如,如果客户 {Sum of @Gross} 是 100 英镑,它可能由 3 行组成,1 行是 50 英镑,2 行是 25 英镑。使用运行总计仅使用最高订单线。 对不起,我对Crystal的了解真的很有限,因为我不经常使用它,只知道如何做基础。 :(
【问题讨论】:
-
您能描述一下您的数据集并展示您的布局吗?这让我有点困惑。
-
你好 heringer,我的数据集基本上是客户表,链接到显示他们已承诺多少的表 - 链接针对客户 ID - 和销售订单表。报告的第 1 组按客户 ID,第 2 组按订单日期,将所有相关收入组合在一起。我不确定您希望我如何向您展示布局。屏幕截图会有所帮助吗,或者您认为最有帮助的是什么?
-
嘿。我仍在尝试了解业务以了解公式。请告诉我我是否理解正确。最终结果在报告页脚中,类似于:10 位客户给予更多,5 位客户给予更少,20 位客户给予相等。我理解正确吗?
标签: crystal-reports shared-variable crystal-reports-2016