SQL Server 如何在ssr的IIF表达式中使用多个条件(With AND

bnlyeluc  于 2022-12-26  发布在  其他
关注(0)|答案(3)|浏览(168)

我想隐藏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)

但是,通过在行可见性中使用此表达式,报表将隐藏除总计行之外的所有行。即使报表应显示具有上述列数量的行。总计值显示正确。

**注意:**我在明细行上设置了此行可见性表达式。

不使用表达式结果如下。
对于前2行所有的数量是0(零),我想隐藏这2行。

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

bmp9r5qi

bmp9r5qi1#

你能试试这个吗?

=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将使该行可见

3pvhb19x

3pvhb19x2#

这里根本不需要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也为零,该行可以隐藏。如果这不是你想要的,你可以写一个更复杂的表达式:

=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,该行被隐藏。

goucqfw6

goucqfw63#

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

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

我认为您必须标识数据源名称或数据来自的表名称。

相关问题