【问题标题】:SSRS: "Contains an error: [BC302205] End of statement expected."SSRS:“包含错误:[BC302205] 预期语句结束。”
【发布时间】:2018-10-19 11:27:20
【问题描述】:

我创建了一个嵌套替换表达式,它将根据当前值更改字段中的字符串。我几乎让它工作了,但是我不确定我需要添加什么来结束声明。有人可以帮忙吗?

 =Replace(
Replace(
REPLACE (Fields!DeviceType.Value, "1", "Desktop / Laptop / Server"),
"2", "Server"),
"3", "Printer"),
"4", "Firewall"),
"5", "Managed Switch"),
"6", "Switch"),
"7", "Access Point Controller"),
"8", "Access Point"),
"9", "Desk Phone"),
"10", "Modem"),
"11", "Mobile Phone"),
"12", "DVR"),
"13", "Camera"),
"14", "NAS / SAN"),
"15", "PBX"),
"16", "UPS"),
"17", "Router"),
"18", "Monitor"),
"19", "Docking Station")

【问题讨论】:

  • 您的图片链接已损坏,但您应该将表达式文本复制/粘贴到您的问题中。这使得其他人更容易修改/测试。
  • @nyccroce 欢迎来到 Stack Overflow!您现在应该编辑您的问题,以添加缺失的详细信息,请参阅最小、完整和可验证示例。 (stackoverflow.com/help/mcve)。随时给我留言。
  • 对不起,我已经添加了表达式。
  • 您的 DeviceType 字段是仅包含数字还是还包含其他文本?
  • 只是数字。我希望它显示相应数字的文本,以便在查看报告时更容易理解资产是哪种设备类型。 (希望这是有道理的)。

标签: reporting-services replace expression reporting


【解决方案1】:

REPLACE 函数将字符串中的一段文本替换为另一段文本,因此 =REPLACE("Mobile Phone", "Mobile", "Cell") 将返回“手机”。在您的情况下,REPLACE 功能不是您所需要的。

理想情况下,您应该有一个数据库表可以加入并从那里获取描述,但我假设您出于任何原因都不能这样做。

因此,您需要的是 SWITCH 功能。

=SWITCH (
    Fields!DeviceType.Value = "1", "Desktop / Laptop / Server",
    Fields!DeviceType.Value = "2", "Server",
    Fields!DeviceType.Value = "3", "Printer",
    Fields!DeviceType.Value = "4", "Firewall",
    Fields!DeviceType.Value = "5", "Managed Switch",
    Fields!DeviceType.Value = "6", "Switch",
    Fields!DeviceType.Value = "7", "Access Point Controller",
    Fields!DeviceType.Value = "8", "Access Point",
    Fields!DeviceType.Value = "9", "Desk Phone",
    Fields!DeviceType.Value = "10", "Modem",
    Fields!DeviceType.Value = "11", "Mobile Phone",
    Fields!DeviceType.Value = "12", "DVR",
    Fields!DeviceType.Value = "13", "Camera",
    Fields!DeviceType.Value = "14", "NAS / SAN",
    Fields!DeviceType.Value = "15", "PBX",
    Fields!DeviceType.Value = "16", "UPS",
    Fields!DeviceType.Value = "17", "Router",
    Fields!DeviceType.Value = "18", "Monitor",
    True, "Unknown Device Type")

最终表达式的作用类似于ELSE,以防您的表达式中没有涵盖某些数据。

如果这不起作用,请检查是否没有前导/尾随空格。如果有,那么您将需要使用 TRIM (TRIM(Fields!DeviceType.Value) = ...)

还要检查该字段是否为文本,如果它实际上是数字,请删除数字周围的引号。

【讨论】:

    【解决方案2】:

    如果您的表达式看起来不错,并且您仍然在这个错误上旋转,我建议检查错误消息中引用的对象上的其他表达式,或者完全删除您的表达式并尝试保存。

    我在看起来很干净的可见性表达式上收到了同样的错误。问题原来是一个额外的结束括号“)”,但令人沮丧的是,因为错误消息说这是我三重检查的 tablix 可见性表达式,一切都很好,结果证明是行可见性表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多