如何在SSRS中使用多个条件(包含AND)的IIF表达式

12

我希望在SSRS报表中隐藏数量为零的行。有多个数量列,如期初库存、毛发运、转移出、已售数量、库存调整和期末库存等。 我正在使用以下表达式完成此任务:

    =IIF(Fields!OpeningStock.Value=0 AND Fields!GrossDispatched.Value=0 AND 
Fields!TransferOutToMW.Value=0 AND Fields!TransferOutToDW.Value=0 AND 
Fields!TransferOutToOW.Value=0 AND Fields!NetDispatched.Value=0 AND Fields!QtySold.Value=0 
AND Fields!StockAdjustment.Value=0 AND Fields!ClosingStock.Value=0,True,False)

但是在使用这个表达式进行行可见性设置时,报表会隐藏除总计行以外的所有行。尽管报表应该显示具有上述列数量的行。 总值显示正确。

注意: 我将此行可见性表达式设置在详细行上。

不使用表达式的结果如下。

前两行的所有数量都为0(零),我想隐藏这两行。

enter image description here

如何解决这个问题,或者我必须使用哪个表达式才能获得所需的结果?


@JC 亲爱的,我编辑了一张图片来帮助你。 - almond eyes
你尝试过使用OR而不是AND吗?如果任何一个字段有值,它就应该可见。 - jelliaes
3个回答

19

你能试一下吗?

=IIF((Fields!OpeningStock.Value=0) AND (Fields!GrossDispatched.Value=0) AND 
(Fields!TransferOutToMW.Value=0) AND (Fields!TransferOutToDW.Value=0) AND 
(Fields!TransferOutToOW.Value=0) AND (Fields!NetDispatched.Value=0) AND (Fields!QtySold.Value=0) 
AND (Fields!StockAdjustment.Value=0) AND (Fields!ClosingStock.Value=0),True,False)

注意:将 Hidden 设置为 False 将使行可见。


3
这里根本不需要使用IIF()。比较操作已经返回true或false。
另外,由于该行可见性位于组行上,请确保在字段中使用与行中相同的聚合函数。因此,如果您的组行显示总和,则应将其放在Hidden属性中。
=Sum(Fields!OpeningStock.Value) = 0 And
Sum(Fields!GrossDispatched.Value) = 0 And 
Sum(Fields!TransferOutToMW.Value) = 0 And
Sum(Fields!TransferOutToDW.Value) = 0 And
Sum(Fields!TransferOutToOW.Value) = 0 And
Sum(Fields!NetDispatched.Value) = 0 And
Sum(Fields!QtySold.Value) = 0 And
Sum(Fields!StockAdjustment.Value) = 0 And
Sum(Fields!ClosingStock.Value) = 0

但是,如果一条记录的值为1,另一条记录的值为-1,而其他所有记录的值都为零,则总和也为零,该行可能会被隐藏。如果这不是您想要的结果,则可以编写更复杂的表达式:

=Sum(
    IIF(
        Fields!OpeningStock.Value=0 AND
        Fields!GrossDispatched.Value=0 AND
        Fields!TransferOutToMW.Value=0 AND
        Fields!TransferOutToDW.Value=0 AND 
        Fields!TransferOutToOW.Value=0 AND
        Fields!NetDispatched.Value=0 AND
        Fields!QtySold.Value=0 AND
        Fields!StockAdjustment.Value=0 AND
        Fields!ClosingStock.Value=0,
        0,
        1
    )
) = 0

这实际上是一种精细的计算方法,用于计算任何字段不为零的行数。如果组中每一行的所有字段都为零,则表达式返回 true 并隐藏该行。

如果您没有进行任何分组,那么我不确定 Group Row 在哪里发挥作用。是否有“详细行”可以放置表达式? - JC Ford
我正在进行样式代码之前的分组。是的,有一个“详细行”,我可以在其中放置表达式...但我应该使用哪个表达式? - almond eyes

0

这里有一个例子,应该能给你一些想法。

=IIF(First(Fields!Gender.Value,"vw_BrgyClearanceNew")="Female" and 
(First(Fields!CivilStatus.Value,"vw_BrgyClearanceNew")="Married"),false,true)

我认为你需要确定数据源名称或表名,从中获取你的数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接