回答

收藏

SSRS-如何使IIF语句忽略无效值

技术问答 技术问答 303 人阅读 | 0 人回复 | 2023-09-12

我正在使用Business Intelligence
  t+ n1 U+ P8 m( g# B2008在SSRS创建一个表。我有一个日期(作为字符串)作为表中使用的值之一。这个值可以包含表示日期的字符串或空白。如果它有一个值,我想用另一种方式格式化它。现在,我对显示它的单元格有以下表达式:
* g1 A, R! V# T; S6 d/ G) D=IIf(Fields!MyDate.Value = Nothing,"",Format(CDate(Fields!MyDate.Value),"dd-MM-yyyy"))如果字段有值,可以完美工作。但是,当字段为空白时,单元格将被填充#Error。假如我只有这个Format功能,这将是有意义的,但似乎IIf该功能应防止其尝试使用空值运行。我用以下表达式测试了它:
( |: q2 p# k0 Y# N  G=IIf(Fields!MyDate.Value = Nothing,"No value","Value")…并且足以确定空白值输入句子的正确部分,并打印无值。我不明白为什么表达式的第二部分(未使用)会导致错误。有没有办法重写而不导致错误?非常感谢。$ i, S- M( l. x4 x; R
编辑:正如我在评论中提到的,我也试过switch语句:
' i8 f3 J" P4 \* l1 G& r" H=Switch(Fields!MyDate.Value = Nothing,"",Fields!MyDate.Value  Nothing,Format(CDate(Fields.MyDate.Value),"dd-MM-yyyy"))但是,这也是回来的#Error空白值。. w+ ?9 }2 D% |+ B
编辑可能的重复项:请不要将其标记为询问IIf是否重复短路。我看了看。它问了不同的问题,但没有给出适合我需要的答案。
" X5 b! e8 H) [' [* r                                                               
/ W7 q$ [& ]1 j3 |2 g5 `' ^; u6 V/ O8 a    解决方案:                                                               
* U' S$ h6 ^# y7 k, M, @                                                                问题是Iif不短路。一个丑陋的解决方案是使用嵌套Iif:! u: x$ J- z0 q$ h4 M% d
=IIf(Fields!MyDate.Value = Nothing,"",_    Format(CDate(Iif(Fields!MyDate.Value = Nothing,Today(),Fields!MyDate.Value)),"dd-MM-yyyy"))丑陋,重复,容易出错。
4 S: J1 c& |, ?另一种选择是创建一个自定义函数 会    短路: 短路:
, c0 j; e; Q* D, |Public Function FormatOrBlank (ByVal theDate As DateTime,ByVal format As String)If String.IsNullOrWhiteSpace(theDate)   Return ""Else  Return Format(CDate(theDate)),format)End IfEnd Function
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则