编写将处理三个不同标签的查询

问题描述 投票:0回答:1

我有3种不同的下拉选项。如果我一次选择一个选项,但是在选择多个选项时会产生错误。这三个标签指的是三个不同的版本。一切正常,但当我在下拉列表中选择多个选项时,它会崩溃。需要帮助了解它的原因

这三个参数是全选:Report1 Report2 Report3

在这里我的查询:

SELECT
  ServerInfo.Version,
  ServerInfo.Type,
  ProjInfo.ProjName,
  ServerInfo.ServName
FROM
  ProjInfo, ServerInfo
WHERE ServerInfo.Version LIKE('%'+@ServerReport+'%')

','附近的语法不正确。

数据集“报告”的查询执行失败。 (rsErrorExecutingCommand)

报告处理期间发生错误。 (rsProcessingAborted)

sql reporting-services ssrs-2012
1个回答
0
投票

这里的问题是查询期望单个字符串值,但是当选择了多个时,报告会向其发送一个值数组。

  1. 在数据集属性的参数选项卡中,更新表达式,如下所示: ="," & Join(Parameters!ServerReport.Value, ",") & "," 这会将选定的值组合成一个逗号分隔的字符串。
  2. 像这样更新你的WHERE子句: @ServerReport like '%,' + ServerInfo.Version + ',%'

这允许它在参数字符串中扫描版本字符串。连接参数和like语句外部的逗号可防止它无意中匹配部分字符串。

澄清:这一切都假设您实际上首先需要like声明。通常你会说:

ServerInfo.Version IN (@ServerReport)

这将接受多个值而无需任何其他更改。但字符串必须完全匹配。

© www.soinside.com 2019 - 2024. All rights reserved.