我正在尝试在Crystal Report(XI)字段中添加一个非常简单的抑制公式,但它没有按预期工作。
如果满足某些条件,我希望文本框可见,否则禁止。勾选抑制框后,我当前的公式如下:
{table1.field1} = "V1" or
{table1.field2} <> "V2" or
PageNumber > 1
如果满足1,2或所有3个条件的任意组合,则显示文字(field1
和field2
都不会返回null
。)
然而,Crystal Reports仅评估公式的第一行;如果field1 = V2
,则该字段不显示。
非常感谢任何帮助。
答案 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) 然后 假 是的