如何通过水晶报表

时间:2018-04-11 10:01:41

标签: crystal-reports suppress

我正在使用vb.net的水晶报告,我希望通过另一个字段的可见性显示/隐藏一些字段。首先,我将抑制条件添加到一个字段,如=>

if Not OnfirstRecord And ({Field1} = previous({Field1})) then
true

我已经添加了这个条件,因为我不想显示重复字段并且它有效。然后我将该行添加到水晶报告中,该行仅在field1 visible = true时显示。

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

1 个答案:

答案 0 :(得分:0)

我不知道检查字段是否被抑制的方法,但是由于您使用公式来抑制要测试抑制的字段,您只需要反转该公式中使用的逻辑

如果Field_A具有以下抑制公式:

if Not OnfirstRecord And ({Field1} = previous({Field1})) then
true
else
false

然后Field_B会有这个抑制公式:

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语句的逻辑陷阱。