如果条件格式化,SSRS嵌套

时间:2017-08-23 01:30:33

标签: sql-server reporting-services sql-server-2012 ssrs-2008 ssrs-2012

我在javascript中有这个代码,它有条件地为数据表着色。我想在SSRS报告中使用相同优先级的相同颜色条件;所以“被拒绝”(蓝色)优先于“已过期”(红色)。

蓝色:拒绝了 黄:待定
红色:过期
橙色:警告
批准:白色
空:白色,除非被拒绝然后是蓝色,即使它是空的。

具有我想要的逻辑的Javascript代码

    if (status == '1') 
      {
                        return 'rejected';
                    } 
                    else if (status == '3') 
                    {
                        return 'pending';
                    }
                     else if (status == '5') 
                     {
                        if (celldate < currentdate) 
                        {
                            return 'expired';
                        } 
                        else if (celldate < warningdate && celldate > currentdate) 
                        {
                            return 'warning';
                        } 
                        else 
                        {
                            return 'approved';
                        }
                    } 
   else 
                    {
                        return 'null';
                    };
}

SSRS报告代码:

=iif(Fields!LICAPPRSTATUSID.Value="1","Blue",
iif(Fields!LICAPPRSTATUSID.Value="3","Yellow",
iif(Fields!EXPIRATIONDATE.Value < Today, "Red",
iif(Fields!EXPIRATIONDATE.Value < DateAdd("d",30,Today) and Fields!EXPIRATIONDATE.Value > Today, "Orange",
iif(IsNothing(Fields!EXPIRATIONDATE.Value),"White","White")))))

我的问题:SSRS代码给出了着色条件的错误优先级

1 个答案:

答案 0 :(得分:0)

我会用SWITCH做到这一点:

SWITCH
    (
    Fields!LICAPPRSTATUSID.Value="1","Blue",
    Fields!LICAPPRSTATUSID.Value="3","Yellow",
    Fields!LICAPPRSTATUSID.Value="5",
        SWITCH
            (
            Fields!EXPIRATIONDATE.Value < Today, "Red",
            Fields!EXPIRATIONDATE.Value < DateAdd("d",30,Today) and Fields!EXPIRATIONDATE.Value > Today, "Orange",
            IsNothing(Fields!EXPIRATIONDATE.Value),"White"
            )
    )

请注意,上述代码是“最佳猜测”,基于您的SSRS代码中的变量如何映射到您的javascript中的变量。

您的javascript逻辑中的案例是否代表所有案例?如果没有,你可能会想要一个默认值。请记住,与评估为true的FIRST条件关联的值将是表达式返回的值。