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

时间:2015-03-05 20:39:57

标签: crystal-reports formula crystal-reports-xi suppress

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

如果满足某些条件,我希望文本框可见,否则禁止。勾选抑制框后,我当前的公式如下:

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

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

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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:7)

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

如果你想要满足所有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

答案 1 :(得分:4)

抑制公式通过在评估为true时抑制对象而不是相反的方式来工作。换句话说,你需要否定你的整个公式。

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

通过De Morgan定律成为

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

然后可以简化为:

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

答案 2 :(得分:-1)

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

如果 ({table1.field1} =&#34; V1&#34;或{table1.field2}&lt;&gt;&#34; V2&#34;或PageNumber&gt; 1) 然后 假 是的