SSRS条件格式(使用AND和OR)

时间:2015-04-28 13:26:27

标签: algorithm reporting-services ssrs-2008 conditional-formatting iif

我有一个关于我目前正在尝试实施的复杂条件格式的问题。代码是:

default_scope -> { includes(:organizations).order('organizations.name , username') }

这一切都很好,直到它引用的最后一个IIF没有。我已经尝试了许多不同的东西来解决它,并且发生的事情是它不会将紫色应用于任何空白的细胞,或者它将紫色应用于所有空白细胞,即使它们是N / A, N / K或N / V. 谁能解释为什么会发生这种情况?我试过处理那一行代码然后忽略其余的但没有成功。

由于

戴夫

2 个答案:

答案 0 :(得分:1)

第一个问题是:

isnothing(Fields!ACT.Value <> "N/A" and Fields!NUM.Value) or isnothing(Fields!ACT.Value <> "N/K" and Fields!NUM.value) or isnothing(Fields!ACT.Value <> "N/V" and Fields!NUM.Value)

始终返回True,因为内部布尔表达式始终不为null。

第二:您可以使用iif而不是switch的组合。

所以,我想,你应该尝试这个表达式:

=Switch
(
    Fields!ACT.Value = "N/V", "No Color",
    Fields!ACT.Value = "N/K", "No Color",
    Fields!ACT.Value = "N/A", "No Color",
    Fields!NUM.Value < Fields!SHORT.Value, "Yellow", 
    Fields!NUM.Value > Fields!INC.Value, "Orange", 
    IsNothing(Fields!NUM.Value), "Purple",
    True, "No Color"
)

修改

我根据您的上一条评论更改了表达式代码。

不要忘记,switch中的条件顺序重要The Switch function returns the value associated with the first expression in a series that evaluates to true(c)MSDN(https://msdn.microsoft.com/en-us/library/ms157328(v=sql.105).aspx

所以你应该IsNothing表达最后的顺序,只能在默认值之前。

答案 1 :(得分:1)

带有IsNothing函数的上一个IsNothing语句未写入正确的上下文中,因为true函数中的条件始终返回=Switch ( Fields!ACT.Value IN ("N/V", "N/K", "N/A"), "No Color", Fields!NUM.Value < Fields!SHORT.Value, "Yellow", Fields!NUM.Value > Fields!INC.Value, "Orange", IsNothing(Fields!NUM.Value) and (Fields!ACT.Value NOT IN ("N/A", "N/K", "N/V"), "Purple", True, "No Color" )

此外,使用NOT IN子句重写OR条件以缩小代码并使其更具可读性。

$pipeline = [
    ['$match' =>
            $criteria->getCondition()],
    ['$group' => 
            ['_id' => '$order_id', 'total' => ['$sum' => '$'.$column]]]
];

$this->getDbConnection()->aggregate('ticket_cache', $pipeline);

想想你的表达,以避免彼此重叠。