【问题标题】:Using Parameters in SSRS with LIKE operator在带有 LIKE 运算符的 SSRS 中使用参数
【发布时间】:2023-03-08 19:47:01
【问题描述】:

我正在尝试创建一个报告,其中包含各种产品组的列表作为参数。选择每个组时,应显示这些相关产品的列表。我目前得到一张空白表。

当我执行查询时会显示此产品组的结果。

我的参数和值列表如下:

我正在努力查看我哪里出错了,当我预览报告时,我可以选择每个参数,但在报告中得到一个空表。我希望我给每个参数一个值的方式可能是问题,但无法弄清楚。

这是报告中的查询。

DECLARE @ProductCode VARCHAR(12)

SELECT STRC_CODE, STRC_DESC FROM DeFactoUser.F_ST_Products
WHERE STRC_CODE LIKE @ProductCode

我正在使用 Visual Studio Data Tools 2012 来构建报告。

如果有人可以给我一个线索,那将不胜感激。

【问题讨论】:

  • 您确定需要用单引号将参数值括起来吗?
  • 没有引号就不行。我认为引号和通配符是允许 LIKE 运算符工作所必需的。
  • “它不起作用” - 你到底是什么意思?
  • 看来你不是映射参数而是在SQL上声明
  • 从您的报告查询中删除 DECLARE @ProductCode VARCHAR(12)。当你在一个词前面加上@,SSRS会自动把它当作参数,不需要声明它

标签: sql-server visual-studio-2012 reporting-services ssrs-2012


【解决方案1】:

没有引号是行不通的。我以为引号和通配符 需要允许 LIKE 运算符工作。

首先你不需要使用引号,我现在尝试重现它,它可以在没有引号的情况下工作:

其次,SSRS 发送给服务器的查询是这样的:

exec sp_executesql N'select model
from [dbo].[cars]
where model like @car',N'@car nvarchar(3)',@car=N'ca%'

因此,它对您的代码唯一改变的是参数类型,它始终将其声明为 unicode,即 nvarchar(...),因此在 SSMS 中尝试将参数类型更改为 @987654324 的代码可能是有意义的@:

declare ProductCode nvarchar(5) = N'PA.A%'

尝试在SSMS中执行它,看看它是否返回smth

【讨论】:

  • 在这种情况下我唯一能想到的就是:你是否连接到正确的服务器和正确的数据库?我完全没有问题让它工作,我使用相同的 SSRS 2012,所以我排除了其中的任何错误
  • 您可以使用 SQL Server 分析器来监控发送到您的服务器的确切信息吗?
  • 我不明白你代码中的这一行.....where model like @car',N'@car nvarchar(3)',@car=N'ca%'这如何转移到我想要做的事情?
  • @NealS 哪一行?
  • 另一件事可以是行级安全性。您是否在同一个 win 用户 hpp\neals 下执行您的报告,或者报告配置为使用另一个(不是 windows)用户?您的 F_ST_Products 是什么?是表格还是视图?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-11
  • 2012-12-15
  • 2010-12-23
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
相关资源
最近更新 更多