3

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

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

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

如果满足 1、2 或所有 3 个条件的任意组合,则显示文本(既不field1也不field2返回null)。

但是 Crystal Reports 只计算公式的第一行;如果field1 = V2然后该字段不显示。

任何帮助将不胜感激。

4

3 回答 3

10

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

如果您试图满足所有 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
于 2015-03-06T05:00:07.683 回答
4

抑制公式的工作原理是在对象求值时抑制对象,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
于 2015-03-05T23:25:58.927 回答
-1

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

IF ({table1.field1} = "V1" OR {table1.field2} <> "V2" OR PageNumber > 1) THEN FALSE ELSE TRUE

于 2015-03-05T21:08:25.580 回答