查询参数的值表达式包含错误;从Object()类型到类型'String'的转换无效

时间:2016-01-28 15:30:42

标签: sql reporting-services ssrs-2008 reporting ssrs-2008-r2

尝试执行报告时遇到此错误。我传递一个多值参数(OrderNo),但无法使其工作。参数是一个订单#,查询将获取该#并返回有关该订单的一些信息并将其放在报表上。

目前,我的参数允许多个值,并通过查询填充可用值。

在我的数据集查询中,我的where语句说:

WHERE x.order_no IN (@OrderNo)

我的数据集参数值为:

=SPLIT(Parameters!OrderNo.Value, ",")

我需要的只是这个查询返回多行,每个订单#一个。然后我可以将其纳入报告。

1 个答案:

答案 0 :(得分:0)

使用带有多值参数的存储过程时出现此问题。我要做的是创建一个拆分字符串函数Like This One.

CREATE FUNCTION [dbo].[fnSplitString] 
( 
@string NVARCHAR(MAX), 
@delimiter CHAR(1) 
) 
RETURNS @output TABLE(splitdata NVARCHAR(MAX) 
) 
BEGIN 
SET @string=REPLACE(@string,'(,)','$$')
DECLARE @start INT, @end INT 
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string) 
WHILE @start < LEN(@string) + 1 BEGIN 
IF @end = 0 
SET @end = LEN(@string) + 1 

INSERT INTO @output (splitdata) 
VALUES(REPLACE(SUBSTRING(@string, @start, @end - @start),'$$','(,)')) 
SET @start = @end + 1 
SET @end = CHARINDEX(@delimiter, @string, @start) 

END 
RETURN 
END 

并在where子句中使用它。

  Where something IN (select *from dbo.fnSplitString('Querying SQL Server',','))