【问题标题】:Suppress ENTIRE customer if they contain 1 shipment within a range如果整个客户在一个范围内包含 1 个货件,则禁止他们
【发布时间】:2014-08-19 22:15:04
【问题描述】:

希望这是有道理的。第一次在这里发帖。

我试图抑制父级的所有实例,而我的参数仅影响子级。我遇到了一个问题,我希望查看所有发货超出日期范围的客户,并且只查看发货超出该日期范围的客户

使用下面我当前的公式,我将退回该日期范围之外的货件,但他们也可能有货件。

例如

{customer.arcustname} ={?Customer}
AND
{jobshipment.ccdate} <> {?DateRange}

日期范围 = 2014 年 7 月 1 日至 2014 年 7 月 31 日

CUST1's最后一次发货是在6/25/2014,这条记录返回true

CUST27/25/2014有货,这条记录返回false

CUST2 也是6/25/2014 上的货件,此记录返回 true 并显示在我的报告中。 -不想要

我希望我的报告只显示CUST1,因为CUST2 的货物在该范围内,但我的报告显示CUST1CUST2,因为它只过滤{jobshipment.ccdate} 而不是整个{customer.arcustname}

任何帮助将不胜感激。谢谢!


编辑:在我的详细信息中,我只有 {customer.arcustname}。我只希望我的报告显示在指定时间段内未订购的客户列表(由销售人员提示)。我看到的所有答案都只显示不在该范围内的货物,我只想查看在日期范围内没有货物的客户。如果他们有货物,我希望我的报告中省略 {customer.arcustname}。


这里是原始 SQL:
SELECT customer."armasterid",customer."arcustname", salesperson."arsalesname",jobshipment."ccdate" FROM ( ( "public".customer customer LEFT OUTER JOIN "public".salesperson salesperson ON customer.arsalesid=salesperson.arsalesid ) LEFT OUTER JOIN "public".job job ON customer.armasterid=job.armasterid )
LEFT OUTER JOIN "public".jobshipment jobshipment ON job.ccmasterid=jobshipment.ccmasterid WHERE ((#NUMBER CONSTANT# = customer."arsalesid")) AND ((NOT ( (customer."araccountstatus" = 'I') ))) ORDER BY customer."arcustname"

【问题讨论】:

  • 您确定要这个吗?看起来您更像是在询问没有在给定范围内发货的客户。如果客户(实际上是潜在客户)还没有任何 货物,无论范围如何,这都会有所不同。也就是说,无论您如何处理,这在 Crystal Reports 中都是相当困难的,并且涉及从服务器中提取大量不需要的数据。您是否需要直接从 Crystal Reports 访问数据库?如果您可以重新处理您的报告以呈现来自您的应用程序的数据集,那就简单多了。
  • 我对 Crystal 还很陌生,这可能不是完成我想要实现的目标的最有效方式。我真正想要的是创建一个销售工具来显示在特定时间范围内没有发货(订单)的客户。 (例如过去 30 天)。

标签: sql filter crystal-reports range suppress


【解决方案1】:
Below solution works assuming you have a customer group and placed dates in detail as you haven't mentioned report structure.
  1. 创建一个公式@count 来计算不在范围内的日期的出现次数。

    if {jobshipment.ccdate} <> {?DateRange}
    then 0
    else 1
    

2. 现在创建一个汇总字段(名为 {@countSummary}),我们在其中获取@count 的总和。将其放在组页脚中

3.在组头(客户组)、详细信息和组脚(客户组)的抑制部分中写入以下抑制条件。

    EvaluateAfter({@count});


 if ({@countSummary}) <> 0
then true
else false

【讨论】:

  • 别忘了删除{jobshipment.ccdate}上现有的记录选择公式。
  • 我已经按照您提到的方式配置了所有内容,但没有得到任何结果。复制您的抑制公式会产生“找不到类型为 DatabaseField 的字段 CustomerGroup。”
  • 我在回答中给出的公式只是为了解释......因为我对您的数据库结构一无所知。 ..请用您的相关字段替换公式的字段
  • 在第 2 步中,您说要获取@count 的摘要。我应该使用哪个汇总函数?总和?
  • 转到该字段..右键单击然后使用插入摘要....在其中使用 sunmation 选项作为 sum
猜你喜欢
  • 2011-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多