我正在尝试调整查询以考虑复合条件语句,即:
({tablea.fielda} <> 5566 And Not ({tablea.fieldb} like '%889009%))
最初的问题是Crystal将采用该语句并删除外部括号并相互独立地执行语句。我认为我通过将整个语句放在“NOT”语句中并反转条件来解决问题,如下所示:
Not ({tablea.fielda} = 5566 And ({tablea.fieldb} like '%889009%))
虽然Crystal确实扭转了条件并保持条件分组,但现在将中心and
更改为or
。
这是我刚刚修改之前创建的报告,因此,我不想创建一个视图或存储过程,这会导致我返回并更改报表中的所有字段。有什么想法吗?
答案 0 :(得分:2)
您的第二个代码段是(正确)处理此问题的正确方法。
Not ({tablea.fielda} = 5566 And ({tablea.fieldb} like '%889009%))
Crystal只会通过De Morgan's Law缩小语句。
{tablea.fielda}<>5566 or {tablea.fieldb} not like '%889009%
逻辑是等价的。