将公式分组以考虑两个字段

时间:2015-09-02 19:09:28

标签: crystal-reports

使用车辆资产管理,我根据两个陈述选择数据:

({EQ_MAIN.PROCST_PROC_STATUS} in ["A", "AS", "AT"] and
{EQ_MAIN.DEPT_DEPT_CODE} like "P*" and
{EQ_MAIN.ASSET_TYPE} <> "COMPONENT") 
or
({EQ_MAIN.PROCST_PROC_STATUS} in ["TA"] and
{EQ_MAIN.DEPT_TEMP_LOANED_TO} like "P*" and
{EQ_MAIN.ASSET_TYPE} <> "COMPONENT")

基本上,如果设备处于状态A,AS或AT并且属于以P开头的部门,我希望它显示在报告上。但是,选择陈述的第二部分说明临时借给另一个部门的设备(状态TA)。选择陈述似乎工作正常。

我的数据按{EQ_MAIN.DEPT_DEPT_CODE}分组。但我希望它包括部门组下的任何暂时借出的设备,如果设备是临时贷款给所述部门。例如,Car A属于部门K1234,但是租借给部门P5678。我希望Car A出现在P5678的团体下以及属于P5678的所有其他车辆。从本质上讲,无论一件eq属于某个特定部门,还是只是借给所述特定部门,我都希望他们在Crystal中的同一组中看到它们。想法?

1 个答案:

答案 0 :(得分:0)

我不相信分组公式是这种情况的解决方案。挑战基于记录集。由于每LOANED_TO只有一个DEPT_CODE条记录,因此您可以通过以下几种方式进行此操作。

  1. 如果这是一个选项,请修改您的查询或视图,以便为每个LOANED_TO生成所有DEPT_CODE条记录。如果使用SQL,可以通过在子句中放置子查询来实现。然后,将父表EQ_MAIN加入到非唯一通用键上的子查询中。由于在此方案中没有一对一的关系,因此您应该获得每个LOANED_TO的所有DEPT_CODE条记录。但是,这将使您的记录集和损失表现膨胀。 然后,首先在{DEPT_CODE}上对报告进行分组,然后在{LOANED_TO}上对报告进行分组。在第二组上使用抑制公式可隐藏与父组{LOANED_TO}不匹配的任何{DEPT_CODE}部门。
  2. 更多传统&#34; Crystal方法是在{DEPT_CODE}上进行分组。然后,将子报告添加到组部分。使用相同的数据源,将第二个选择条件块(遵循OR子句)移动到子报告记录选择。这将返回所有{LOANED_TO}条记录。在组{DEPT_CODE}和子报告{LOANED_TO}部门之间添加子报告链接。这会将结果过滤为与主要组相关的{LOANED_TO}条记录。