【问题标题】:SSRS - Conditional Text Formatting (Expressions using Switch)SSRS - 条件文本格式(使用 Switch 的表达式)
【发布时间】:2013-06-12 14:24:55
【问题描述】:

我将通过说明表达式在报告中确实有效来打开它。问题是他们没有一起工作。

我目前有一个基于两列值格式化的列标题。斜体和下划线基于 Column1 的值。粗体和基于 Column2 值的特定颜色。我通过在文本属性中使用 Switch 表达式来做到这一点。这是我为每个人准备的:

=Switch(Fields!Column1.Value <> "Specific Value","Italic",Fields!Column1.Value = "Specific Value","Normal")
=Switch(Fields!Column1.Value <> "Specific Value","Underline",Fields!Column1.Value = "Specific Value","None")
=Switch(Fields!Column2.Value <= 7,"ExtraBold",Fields!Column2.Value >=` 8,"Normal")
=Switch(Fields!Column2.Value <= 7, "Red",Fields!Column2.Value >= 8,"#586d7f")

还有一张图片来显示它们都被标记了:

当我运行报告时没有错误。

奇怪的是(至少对我来说)结果应该是这样的:

  1. 正常
  2. 粗体和红色
  3. 斜体和下划线
  4. 全部四个(粗体、斜体、红色和下划线)

在文本应该看起来像 4 的情况下,它看起来像 2。其他一切都按照它应该的方式工作,所以我有点难过,想解释一下为什么会这样。我查看了之前是否已经回答过这个问题,但根据我所看到的,它似乎不是这样。如果我使用了任何错误的术语,我深表歉意(我对此很陌生)。

【问题讨论】:

  • 如果 switch 语句有特定的问题,我会切换到 IIF 语句并首先尝试:=IIF(Fields!Column1.Value "Specific Value", "Italic" , "正常")
  • 我刚刚尝试过,它成功了。我曾考虑过,但看不出会有什么不同。知道为什么这会起作用但 switch 不起作用吗?
  • 在下面为你写了一个更彻底的答案。

标签: reporting-services properties textbox expression ssrs-expression


【解决方案1】:

我会改用 IIF() 语句。

=IIF(Fields!Column1.Value <> "Specific Value", "Italic", "Normal") 

一般来说,switch 是针对多次出现的“case”语句,而 IIF 语句是典型的“if, then, else”语句。危险在于您可以嵌套 IIF(thing, 'set1', iif(thing2, 'set2', 'default')) 之类的 IIF 语句,但是像 Switch(thing, 'set1, thing2, 'set2','默认')。开关的问题是,如果一件事和另一件事同时发生,它会假设第一个是真的,然后执行。因此,您必须考虑某些事情发生的正确顺序,否则它将假定第一个实例。通常,当您有某个实例和默认值时,我会使用 IIF。如果 switch 有问题,我通常会做一个嵌套的 IIF 或重新排序 Switch 语句的事件。

希望对你有所帮助。

【讨论】:

  • 谢谢!现在,在尝试确定使用哪个时,我将牢记这一逻辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多