仅在符合条件的情况下显示最后记录

时间:2017-06-27 18:14:13

标签: crystal-reports

如果符合某些条件,我的报告需要显示客户的最后一条记录。但我还需要展示一个没有达到这些条件的客户。

该报告目前显示的客户已使用303(仅限最后一次)和那些尚未使用的客户编码。但那些不是303的人不应该表现出任何东西。

Client    Date          Process Code  

4         4/1/2017      303        
4         5/1/2017      101       
4         6/1/2017      303         

6         4/1/2017      101
6         6/3/2017      101

7         5/15/2017     303
7         5/28/2017     101

他们希望在报告中看到的是:

Client      Date           Process Code
4           6/1/2017       303
6    
7           5/15/2017      303

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:1)

一种选择是在您的流程代码= "303"时创建存储相关字段的共享变量。

每当您更改组时,请将变量重置为“”。 (您可以通过在客户的组头中放置公式来完成此操作。)使用新公式在客户端组页脚中显示这些公式。如果找到任何303,变量将显示他们捕获的最新值。否则,空白。

答案 1 :(得分:1)

  • 为您的client
  • 创建一个群组
  • date降序排列该组内的记录(不对组本身进行排序)
  • 详细打印客户端详细信息块
  • 如果process code不是303或已经打印了一个明细行,请取消详细信息阻止

    • 在现有的之后添加其他详细信息部分。如果你愿意,可以取消它。
    • 在添加的详细信息部分中放置一个公式@printed,其中包含类似

      的内容
      shared BooleanVar printed303; 
      if {Yourtable.ProcessCode = 303 then printed 303 := true;
      
    • 在包含

      之类的组标题中放置另一个公式@reset
      shared BooleanVar printed303; 
      printed303 := false;
      
    • 在您的详细信息部分添加一个抑制条件,其中包含类似

      的内容
      shared BooleanVar printed303; 
      {Yourtable.ProcessCode <> 303  or printed303;
      

那应该按照你的描述进行。