0

我的报告显示在过去五周内订购了 3 次且没有未完成订单的客户,如果未完成的价值低于我们的最低订单。

目前,它为过去 35 天内的所有内容选择客户代码、名称、订单文档日期和文档总计。我的公式将 orderdate 和 customer name 连接为 distinctcount。这会报告该时间段内是否有足够的订单。

我按串联和“运行编号”(客户通常乘坐哪辆卡车)进行分组,选择案例定义了在哪个工作日发生了什么。以下 Switch 语句似乎是问题所在:

Switch
(DistinctCount ({@Concat code and date}, {ORDR.CardCode}) <=2,0,
{#RTotal0} > 250, 0,
True, 1);

这将确定某人在报告期间是否有两个或更少的订单,或者他们是否有超过 250 英镑的未完成订单。如果不满足,则默认为可用值“1”。

当我尝试在此开关上(在组标题中)运行警报或记录选择时,它不会出现在可以在任一选项中选择的字段列表中。当我手动将其放入字段时,我收到以下消息:

先前字段之一在该字段的组级别上不是恒定的

我发现的最接近的问题是无法总结,但我没​​有成功。我该如何解决这个问题?

EDITNOTE - 请参阅下面的新下载。

EDITNOTE 2 - 感谢您的关注,Siva。基本前提如上。我们派出卡车在一周中的特定日期送货。我有一个单独的表单上的代码来启用它并且可以导入 - 这有点花哨,我可以稍后添加。

此报告的规则是,如果客户在过去 5 周内有 3 个或更多订单,或者在合并的 doctotals 上的订单少于 250,那么我们需要联系他们以查看他们是否需要订单或下订单订购到最小值。

由于我们的客户可以为同一次运行下多个订单,因此我必须使用串联公式(docdate 和客户编号)通过 distinctcount 记录他们在过去 35 天内有多少交付,并计算出他们是否符合条件。

我有一个基于未结订单的分组运行总计,以计算它们是否符合最低订单价值。

该文件的简化版本在这里。我已经从各种来源中取出了一些我尝试过的东西。当我尝试基于“通过开关调用有效”的警报或排序时,它不会将公式显示为我可以选择的公式,当我手动将其放入时会发出警告“前面的字段之一不是恒定的超过该字段的组级别”。

感谢所有帮助:)

4

1 回答 1

0

你能上传你的水晶报表让我们看看吗?

了解正在发生的事情有点困难。您是否尝试在现有的“分组”公式上创建一个过滤器并且它不允许您?

编辑:再次查看您的帖子,尝试将一些分组/过滤逻辑卸载到您的查询可能是一个更好的解决方案。有时必须在 Crystal 中执行此操作会给您的报表逻辑增加不必要的复杂性。

无论如何,发布您的 CR,我会看看。

编辑 2:我认为问题是由于带有 switch 语句的公式的评估时间。由于运行总计,它强制此公式运行“WhilePrintingRecords”,这是评估时间的最后一次。因此,我认为它不会让您设置记录选择过滤器。

我的建议是您将该 RT 计算卸载到查询中,换句话说,在您的 Order 查询中设置一个“OpenDocTotal”字段(从您的 ORDR 表更改为带回您需要的任何 ORDR 信息加上这个新字段的查询)返回DocStatus 关闭时为 0,DocStatus 打开时为 DocTotal。然后,您可以尝试在基于此字段的公式中使用常规摘要。如果这不起作用,那么您应该尝试将查询中的所有数据分组,使用这种方法将大大简化 Crystal 逻辑。

于 2016-08-26T14:28:21.023 回答