IIF不会评估数字和字符串

时间:2016-11-30 13:51:49

标签: reporting-services

给出一组输入样本:

=IIF(ReportItems!Onhand_PCT.Value < 1 , "Yellow",
 IIF(ReportItems!Onhand_PCT.Value = "Over" , "Red",
 "Blue"))

我尝试使用诸如

之类的表达式有条件地设置背景颜色的格式
ReportItems!Onhand_PCT.Value

然而,无论我如何尝试解决这个问题,它都只适用于字符串或数字,有时既不适用,也不适用于两者。奇怪的是,我可以(通过在IIF上使用转换函数使其显式为字符串或数字)使其适用于某些行,而其他行则为白色背景(在{{ 1}}是“白色”?)。

1 个答案:

答案 0 :(得分:2)

尝试:

=IIF(
   IsNumeric(ReportItems!Onhand_PCT.Value),
   IIF(ReportItems!Onhand_PCT.Value < 1,"Yellow",Nothing),
   IIF(ReportItems!Onhand_PCT.Value = "Over" , "Red","Blue")
 )

UPDATE:当值为导致错误的字符串时,似乎IsNumeric未评估为false。

转到Report菜单/ Report Properties /并在Code标签下粘贴此自定义VB功能。

Public Function GetColor(ByVal value as String) As String
  Dim color As String
  Dim numberValue As Double
  if IsNumeric(value) Then
     numberValue = Cdbl(Val(value))
     color = iif(numberValue < 1, "Yellow", "Transparent")
  else
     color = iif(value = "Over","Red","Blue")
  End if
  return color
End Function

现在在background color属性中,您可以调用此自定义函数,将Onhand_PCT值的值作为函数的参数传递。

=Code.GetColor(ReportItems!Onhand_PCT.Value)

enter image description here

  

注意Onhand_PCT >= 1将是透明的,您可以自定义它   通过更改自定义函数中的"Transparent"

如果有帮助,请告诉我。