Crystal reports 根据crystal report中的运行总计字段对组进行排序

Crystal reports 根据crystal report中的运行总计字段对组进行排序,crystal-reports,crystal-reports-2008,crystal-reports-2010,Crystal Reports,Crystal Reports 2008,Crystal Reports 2010,我有一个报告,旨在显示给定商店内给定商品的净销售额和购买量。该报告包含两个组,第一个组位于存储区,第二个组位于项目上,如下例所示: 存储:存储名称[组标题] 项目:项目名称[组标题] [数量][DocNum][DocType][Detail] [500][8][S] [200][3][P] 总销售额500[集团页脚] 采购总额200 [组页脚] 总计字段是正在运行的总计字段,而不是摘要字段。我所需要的只是根据更高的销售或购买金额对store组中的项目进行排序,这样的排序将通过一个由布尔参数值表示

我有一个报告,旨在显示给定商店内给定商品的净销售额和购买量。该报告包含两个组,第一个组位于存储区,第二个组位于项目上,如下例所示:

存储:存储名称[组标题]
项目:项目名称[组标题]

[数量][DocNum][DocType][Detail]
[500][8][S]
[200][3][P]

总销售额500[集团页脚]
采购总额200

[组页脚]

总计字段是正在运行的总计字段,而不是摘要字段。我所需要的只是根据更高的销售或购买金额对store组中的项目进行排序,这样的排序将通过一个由布尔参数值表示的排序选项来完成。如果参数值为false,则销售金额较高的项目将排在订单的第一位,然后是金额较高的下一个项目等。如果参数值为true,则采购金额较高的项目将排在订单的第一位,然后是金额较高的下一个项目等。不幸的是,我无法使用“报告”菜单下的“组排序”选项,因为我没有基于组的摘要,因此“组排序”选项被禁用,即使没有,它也将根据不在“运行总计”字段上的摘要字段进行排序。有没有人知道如何实现这样的目标

我所尝试的:


我尝试使用order by子句通过数据库获得结果,但这并不能像我预期的那样正常工作

有两种方法可以实现:

  • 更简单的一种方法是制作两个不同的报告,并根据具体情况而定 布尔值调用不同的报告。不是最好的解决方案,因为 报告的每次更改都必须同时更改,等等
  • “更好的方法”是在调用报表之前对数据进行排序,所以当您在报表中使用分组时,您可以按列分组,并选择“按原始顺序”(下图)。您的数据将按照调用report之前的排序方式进行排序,并且两种情况下仅使用一个report

所以,做对你来说更容易的事情吧,两种方法都有效,但需要不同的方法。第三种方式可能有下划线逻辑和很多if-then-else逻辑,但你需要很多条件,有时可能会很混乱


希望它能帮助您

实现这一目标有两种方法:

  • 更简单的一种方法是制作两个不同的报告,并根据具体情况而定 布尔值调用不同的报告。不是最好的解决方案,因为 报告的每次更改都必须同时更改,等等
  • “更好的方法”是在调用报表之前对数据进行排序,所以当您在报表中使用分组时,您可以按列分组,并选择“按原始顺序”(下图)。您的数据将按照调用report之前的排序方式进行排序,并且两种情况下仅使用一个report

所以,做对你来说更容易的事情吧,两种方法都有效,但需要不同的方法。第三种方式可能有下划线逻辑和很多if-then-else逻辑,但你需要很多条件,有时可能会很混乱


希望它能帮助您

而不是操纵运行总数。。操纵数量部分,以便如果数量发生变化,则运行总数将自动变化

试试下面的方法,让我知道

数量
再插入一组(在您的情况下是第三组),详细列出数量,并写出您的运行总数

现在,对于组3,转到
更改组
,并选择选项使用
公式作为组排序顺序

当“公式”窗口打开时,请编写以下代码

if paramter="false"
then crDescendingOrder
else crAscendingOrder

告诉我进展如何。

而不是操纵运行总数。。操纵数量部分,以便如果数量发生变化,则运行总数将自动变化

试试下面的方法,让我知道

数量
再插入一组(在您的情况下是第三组),详细列出数量,并写出您的运行总数

现在,对于组3,转到
更改组
,并选择选项使用
公式作为组排序顺序

当“公式”窗口打开时,请编写以下代码

if paramter="false"
then crDescendingOrder
else crAscendingOrder

让我知道进展如何。

首先感谢所有试图帮助我或给我一个想法的人:)。最后,我必须通过向it发送一个附加参数来指定排序选项,从而对存储过程进行更改。我是通过将我的选择放在一个公共表表达式中来实现的,然后我从该表中选择净销售额和净采购,按门店和商品分组,然后根据参数值选择净销售额字段或净采购字段进行订购,并在报告中选择订单选项作为原始订单。它工作得很好,我从一开始就知道这个解决方案,但我不想直接把它作为第一个解决方案来避免查询执行缓慢。

首先感谢所有试图帮助我或给我一个想法的人:)。最后,我必须通过向it发送一个附加参数来指定排序选项,从而对存储过程进行更改。我是通过将我的选择放在一个公共表表达式中来实现的,然后我从该表中选择净销售额和净采购,按门店和商品分组,然后根据参数值选择净销售额字段或净采购字段进行订购,并在报告中选择订单选项作为原始订单。它工作正常,我从一开始就知道该解决方案,但我不想直接将其作为第一个解决方案,以避免查询执行缓慢。

我有4种类型的文档销售、销售退货、采购和采购退货,这些类型在返回的数据中表示为一列,每列有4个v中的1个