gpt4 book ai didi

reporting-services - 使用存储过程的SSRS多值参数

转载 作者:行者123 更新时间:2023-12-03 11:47:41 26 4
gpt4 key购买 nike

我正在处理SSRS报告,该报告使用包含一些参数的存储过程。我在使用两个参数时遇到问题,因为我想选择一个以上的选项。

这是我所拥有内容的精简版:

CREATE PROCEDURE [dbo].[uspMyStoredProcedure] 
(@ReportProductSalesGroupID AS VARCHAR(MAX)
,@ReportProductFamilyID AS VARCHAR(MAX)
,@ReportStartDate AS DATETIME
,@ReportEndDate AS DATETIME)

--THE REST OF MY QUERY HERE WHICH PULLS ALL OF THE NEEDED COLUMNS

WHERE DateInvoicedID BETWEEN @ReportStartDate AND @ReportEndDate
AND ProductSalesGroupID IN (@ReportProductSalesGroupID)
AND ProductFamilyID IN (@ReportProductFamilyID)

当我尝试只运行存储过程时,如果仅为 @ReportProductSalesGroupID输入1个值,为 @ReportProductFamilyID输入1个值,则仅返回值。如果我尝试输入两个 SalesGroupID和/或2个 ProductFamilyID,则不会出错,但是我什么也没返回。

-- Returns data
EXEC uspMyStoredProcedure 'G23', 'NOF', '7/1/2009', '7/31/2009'

-- Doesn't return data
EXEC uspMyStoredProcedure 'G23,G22', 'NOF,ALT', '7/1/2009', '7/31/2009'

在SSRS中,我收到一条错误消息:

Incorrect syntax near ','



字符串中似乎包含了 ,分隔符,而不是分隔符

最佳答案

您需要三件事:

  • 在SSRS数据集属性中,将多值参数作为逗号分隔的字符串传递给存储过程

    =Join(Parameters!TerritoryMulti.Value, ",")
  • 在Sql Server中,您需要一个表值函数,该函数可以将以逗号分隔的字符串拆分回迷你表中(例如see here)。编辑:自SQL Server 2016起,您可以为此函数使用内置函数STRING_SPLIT
  • 在存储过程中,有一个where子句,如下所示:

    WHERE sometable.TerritoryID in (select Item from dbo.ufnSplit(@TerritoryMulti,','))

    ...其中ufnSplit是您从第2步开始的拆分功能。

  • (我的博客文章“ SSRS multi-value parameters with less fail”中的完整步骤和代码):

    关于reporting-services - 使用存储过程的SSRS多值参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1256925/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com