Crystal reports 如何在crystal report中通过另一个字段可见性显示/隐藏字段

Crystal reports 如何在crystal report中通过另一个字段可见性显示/隐藏字段,crystal-reports,suppress,Crystal Reports,Suppress,我在vb.net中使用crystal report,我想通过另一个字段的可见性显示/隐藏某个字段。首先,我向一个字段添加抑制条件,如=> if Not OnfirstRecord And ({Field1} = previous({Field1})) then true 我添加了这个条件,因为我不想显示重复的字段,它可以工作。然后我在crystal report中添加了一行,该行仅在field1 visible=true时才会显示 我的想法是在field1可见时显示line,在field1隐藏

我在vb.net中使用crystal report,我想通过另一个字段的可见性显示/隐藏某个字段。首先,我向一个字段添加抑制条件,如=>

if Not OnfirstRecord And ({Field1} = previous({Field1})) then
true
我添加了这个条件,因为我不想显示重复的字段,它可以工作。然后我在crystal report中添加了一行,该行仅在field1 visible=true时才会显示


我的想法是在field1可见时显示line,在field1隐藏时显示hide。那么如何显示条件取决于field1可见性的line呢?

我不知道如何检查字段是否被抑制,但由于您使用的是公式来抑制要测试抑制的字段,你只需要把公式中的逻辑颠倒一下

如果场_A具有以下抑制公式:

if Not OnfirstRecord And ({Field1} = previous({Field1})) then
true
else
false
if Not OnfirstRecord And ({Field1} = previous({Field1})) then
false
else
true
那么,场_B将具有以下抑制公式:

if Not OnfirstRecord And ({Field1} = previous({Field1})) then
true
else
false
if Not OnfirstRecord And ({Field1} = previous({Field1})) then
false
else
true
另外,我想指出的是,在抑制公式中并不总是需要使用If..Then..Else逻辑。If语句中使用的表达式最终将计算为true或false值。您可以将抑制公式缩短为表达式本身,并且抑制将以更少的编码工作


因为您使用了if语句,所以我在您的逻辑中添加了一个else。如果不同时为true和false值指定条件,则使用If语句的抑制公式可能会产生意外结果。当您仅返回真值时,公式只能抑制该字段。一旦一条记录的计算结果为true,如果需要抑制后续记录,则公式永远不能将该值设置回false。这也是为什么最好只在抑制公式中使用表达式的另一个原因。由于表达式的计算结果始终为true或false,因此它们可以帮助您避免落入没有指定其他条件的if语句的逻辑陷阱。

感谢您的解释@R.McMillan,