【问题标题】:Crystal Reports - order of OR statements in record filter affects resultsCrystal Reports - 记录过滤器中 OR 语句的顺序会影响结果
【发布时间】:2016-10-02 11:45:25
【问题描述】:

如果系统将结果标记为不可接受,我有一份报告应该提取献血者结果记录。我正在使用的记录过滤器如下。我的问题是,根据 OR 语句的排序方式,报告上显示的结果会有所不同。就像现在一样,如果我有一个完全没有 QUAL_TEST 结果的供体,那么该供体不可接受的物理结果不会出现在报告中。如果我翻转 OR 语句的顺序,则会出现物理结果不可接受的捐赠者,但 QUAL_TEST 结果不可接受但没有物理测试的捐赠者不会出现。 OR 语句周围的括号没有做任何事情吗?

{DONOR_VISIT.VISIT_DATETIME} in {?Visit Start Date} to {?Visit End Date} and 
({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N" or 
{DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N")

【问题讨论】:

  • 你需要使用and而不是{DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N" and {DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N"
  • 这会不会导致报告只提取 QUAL_TEST 和 PHYSICAL 结果都被标记为不可接受的捐赠者?
  • 我想这是你的要求...正确吗?
  • 报告应该拉出在其中任何一个领域都有“N”的捐赠者,但不一定两者兼而有之。他们可能有非常好的 PHYSICAL 结果和糟糕的 QUAL_TEST 结果,但由于 QUAL_TEST 结果不可接受,它们应该出现在报告中。

标签: filter crystal-reports report filtering


【解决方案1】:

正如您在这种情况下所描述的那样,除了否定检查,您还需要进行肯定检查。

假设你有Y,如果结果很好,请尝试下面

{DONOR_VISIT.VISIT_DATETIME} in {?Visit Start Date} to {?Visit End Date} and 
(({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N" and
{DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N") or
({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N" and
{DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "Y") or
({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "Y" and
{DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N"))

如果两个结果都不好则不需要记录,则删除下面并保持休息

({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N" and
{DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N") 

【讨论】:

    【解决方案2】:

    比 Null-ver 迟到更好!

    我认为真正的原因是在过程中遇到了 NULL。如果其中一个字段具有“N”但另一个为空白(或 NULL),它将无法执行选择的任何部分,并且该记录将被忽略。一个简单的解决方案是更改 Crystal 处理公式中的 NULL 值的方式,以读取“NULLS 的默认值”而不是“NULLS 的异常”,或者编写您的公式,以便 NULL 记录不会破坏您的公式。我相信非日期部分使用如下内容就足够了:

    (Not IsNull({DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD}) and 
    {DONOR_VISIT_QUAL_TEST.ACCEPTABLE_VALUE_CD} = "N") or 
    (Not IsNull({DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD}) and 
    {DONOR_VISIT_PHYSICAL.ACCEPTABLE_VALUE_CD} = "N")
    

    【讨论】:

      猜你喜欢
      • 2016-08-23
      • 2018-04-15
      • 1970-01-01
      • 2019-09-14
      • 2012-11-14
      • 2019-02-08
      • 2016-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多