1

我对存储过程相当陌生,并将它们与 SSRS 一起使用。

我想使用带有允许多个值的参数的存储过程创建一个简单的 SSRS 报告(来自单独的过程的结果)

我有 2 个简单的存储过程,如下所示。

Create Procedure WO
@STARTDATE datetime, @ENDDATE datetime, @DISTRICT varchar(25)
AS
SELECT A.WO, A.CUST, A.DISTRICT, A.COMPL_DATE
FROM WORK_ORDERS A
WHERE A.COMPL_DATE between (@STARTDATE) and (@ENDDATE) 
and A.DISTRICT_NAME in (@DISTRICT)

Create Procedure DISTRICT
AS
SELECT B.DISTRICT_NAME
FROM DISTRICTS B

在我的 SSRS 报告中,我使用“DISTRICT”参数和 DISTRICT 程序中的可用值(允许多个值)使用 DISTRICT 程序的结果报告 WO 程序。我还在 WO 程序的参数中使用了 DISTRICT 参数。

这在选择一个地区时有效,但在我选择多个地区时无效。有愿意帮忙的吗?

4

1 回答 1

0

如果我没记错的话,问题在于处理字符串参数@district - 假设选择了 4 个区域,SSRS 传递的内容可能类似于“N、S、E、W” - 存储的 proc 然后会显示为: ...A.District_Name in ('N,S,E,W')... 仅当存在地区名称 'N,S,E,W' 时才会返回值。因此,我认为您需要拆分传入的值并将其重新组合为“N”、“S”、“E”、“W”。不幸的是,SQL Server 中没有 SPLIT 函数,因此您要么必须编写 UDF(有几篇文章可用),要么进行 CLR 调用。

这是一个聪明(且未经测试)的想法 - 尝试 Replace(@District,',',''',''') (我想我的引号是对的......)

于 2013-02-28T21:24:59.023 回答