我的SSRS表达有什么问题?

时间:2017-03-20 13:58:55

标签: datetime reporting-services

我试图在SSRS中有条件地格式化我的单元格,这样如果该特定网站变为活动状态的日期是在过去的特定日期之后(在这种情况下,2017年1月31日),它应该是黑色的,否则不会颜色。

我试过这个:

=IIf(datediff("dd", "2017-01-31", Fields!<datefield>.Value) > 0
    ,"Black"
    ,"Transparent"
    )

但我尝试的任何东西似乎都没有任何区别(即它总是透明的,即使我尝试将相关颜色交换成圆形)。

我做错了什么?!

非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

这里有一些问题。 DateDiff比较两个日期,因此您需要使用CDate函数来转换字符串(确保设置报表语言以便根据您的语言环境转换日期),还需要指定要比较的字段。试试这个(用你自己字段的名称替换MyDateField):

=Iif(DateDiff(DateInterval.Day, CDate("2017-01-31"), Fields!MyDateField.Value) > 0, "Black", Nothing)

另外,我使用了DateInterval枚举。我知道在线文档建议您可以使用字符串(例如“dd”),但这不起作用!

最后,你会注意到我使用了Nothing而不是“Transparent”。那是因为Visual Studio(如果你使用它)不能将Transparent识别为有效颜色(是的,真的......)并相应地生成警告。如果你有很多这样的表达方式,这些可能会变得很烦人!

答案 1 :(得分:1)

你可以尝试下面的表达式吗?我打赌你关闭日期格式。

=IIf(datediff(DateInterval.Day, Date(2017,1,31), Fields!.Value) > 0, "Black", "Transparent")