2013-03-01 77 views
2

我正在为MS-SQL 2008 R2使用SSRS。我有一列数据将显示活动员工,非活动员工或空值。如果列中的文本颜色为非活动员工或空值,我想将其改为红色。我也想更改Null以在列中显示“No Staff”。我可以将其中一个或另一个变成红色,但不能同时变为红色,目前我有不活跃的员工。ssrs动态文本颜色

我使用,以产生列的两个表达式是: 对于列值:

=IIF(IsNothing(Fields!StaffName.Value), 
     "No Staff", 
     Fields!StaffName.Value) 

对于颜色:

=IIF(Fields!StaffName.Value.ToString().Contains("Inactive"), "Red", 
IIF(ISNothing(Fields!StaffName.Value), "Red", 
"Black" 
)) 
+1

记住区分大小写 – 2013-03-01 19:52:30

回答

2

我做了一些猜测你的数据集,并组建了一个简单的例。

数据集:

select StaffName = 'Staff 1' 
union all select StaffName = 'Staff 2 (Inactive)' 
union all select StaffName = null 

表达对文本框,完全一样的你:

=IIf(IsNothing(Fields!StaffName.Value), "No Staff", Fields!StaffName.Value) 

表达对文本框颜色属性:

=IIf(InStr(Fields!StaffName.Value, "Inactive") > 0 or IsNothing(Fields!StaffName.Value) 
    , "Red" 
    , "Black") 

最终结果:

enter image description here

@Preet Sangha在他的评论做了一个很好的点,也因此你可能需要记住大小写。

+0

请记住,SSRS还用于其他数据源,如SSAS,因此并不总能确定SQL是查询语言。但我同意有时候更容易打乱查询,或者它是字段)比报表中的表达式这是SSRS的真正之美 - 提供的自定义级别。 – 2013-03-02 01:46:40