Crystal 报告多个 OR 运算符不起作用的抑制公式

Crystal reports suppression formula with multiple OR operators not working

我正在尝试向我的 Crystal 报告 (XI) 字段添加一个非常简单的抑制公式,但它没有按预期工作。

我希望在满足特定条件时显示文本框,否则禁止显示。勾选抑制框后,我当前的公式如下:

{table1.field1} = "V1" or
{table1.field2} <> "V2" or
PageNumber > 1

如果满足 1、2 或所有 3 个条件的任意组合,则显示文本(field1field2 都不会 return null)。

但是 Crystal Reports 仅评估公式的第一行;如果 field1 = V2 则该字段不显示。

如有任何帮助,我们将不胜感激。

试试这个如果你只想在归档级别抑制 - 保持它在归档级别;如果你想压制整个部分 - 把它放在部分级别。

如果 ({table1.field1} = "V1" 或 {table1.field2} <> "V2" 或 PageNumber > 1) 然后 错误的 否则为真

抑制公式的工作原理是在计算结果为 true 时抑制对象,而不是相反。换句话说,你需要否定你的整个公式。

not(
    {table1.field1} = "V1" or
    {table1.field2} <> "V2" or
    PageNumber > 1
   )

成为,通过德摩根定律

not({table1.field1} = "V1") and
not({table1.field2} <> "V2") and
not(PageNumber > 1)

然后可以简化为:

{table1.field1}<>"V1" and
{table1.field2="V2" and
PageNumber = 1

这有点令人困惑,但请尝试以下方式...

如果你想满足所有 3 个条件,那么你需要先写那个,因为如果首先满足任何一个条件,那么控制将永远不会达到 statisying all 3 conditions,然后你的常规条件才能满足每一个。

所以你的公式是:

If
({table1.field1} = "V1" and
{table1.field2} <> "V2" and
PageNumber > 1)
then false        //don't Supress when all are met
else if {table1.field1} = "V1"
Then false        //field1 is met so don't supress
else if {table1.field2} <> "V2"
then false        //field2 is met don't supress
else if PageNumber > 1
then false       //3rd condition is met don't supress
else true        //Supress anything as all conditions were failed