如果系统已将结果标记为不可接受,我有一份报告应该提取献血者结果记录。我使用的记录过滤器如下。我的问题是,根据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")
答案 0 :(得分:0)
正如你在这种情况下所描述的以及否定检查,你需要做出积极的检查。
假设您有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")
答案 1 :(得分:0)
比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")