3

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

我目前有一个基于两列值格式化的列标题。斜体和下划线基于 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。其他一切都按照它应该的方式工作,所以我有点难过,想解释一下为什么会这样。我查看了之前是否已经回答过这个问题,但根据我所看到的,它似乎不是这样。如果我使用了任何错误的术语,我深表歉意(我对此很陌生)。

4

1 回答 1

6

我会改用 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 语句的事件。

我希望这会有所帮助。

于 2013-06-12T19:13:34.923 回答