【问题标题】:Second and Third Multiple Value Parameters Not Passing Through To Drillthrough Report In SSRS 2012SSRS 2012 中的第二个和第三个多值参数未传递到钻取报告
【发布时间】:2019-07-05 03:52:01
【问题描述】:

我在网上找到了很多关于将多值参数传递给 SSRS 中的钻取报告的帮助。我在SSRS 中没有找到multiple 多值参数的成功响应。

为了解释,我有以下总结报告:

SELECT

SH.[USER-ID],
U.[DESCRIPTION] AS "USER NAME",
COUNT (J.[JOB-NO]) AS "NUMBER-OF-JOBS"

FROM

[RM-JOB] AS J
LEFT OUTER JOIN
[RM-STAGE-HISTORY] AS SH ON SH.[JOB-NO] = J.[JOB-NO]
JOIN
[CO-USERS] AS U ON U.[USER-NAME] = J.[RAISED-BY]
LEFT JOIN
[IH-LOCATION] L ON J.[PLACE-REF] = L.[PLACE-REF]
LEFT JOIN
[IH-LOC-ATTR] LA ON  J.[PLACE-REF] = LA.[PLACE-REF] AND LA.[ATTRIB-CODE] = 'SBU'


WHERE

J.[DATE-LOGGED] BETWEEN @DATE1 AND @DATE2
AND
SH.[STAGE-CODE] IN ('06')
AND
SH.[STAGE-DATE] BETWEEN @DATE1 AND @DATE2
AND
J.[RAISED-BY] = SH.[USER-ID]
AND
LA.[SUB-ATTRIB-CODE] IN (@SBU)
AND
J.[RAISED-BY] IN (@RAISEDBY)
AND
J.[LATEST-PRIORITY] IN (@Priority)
AND
L.[MGT-AREA] IN (@MGTAREA)

GROUP BY

SH.[USER-ID],
U.[DESCRIPTION]

ORDER BY

U.[DESCRIPTION]

以及以下详细信息报告:

   SELECT DISTINCT

    J.[RAISED-BY],
    J.[JOB-NO],
    LEFT(J.[PLACE-REF],3) AS [SCHEME],
    J.[PLACE-REF],
    L.[MGT-AREA],
    LA.[SUB-ATTRIB-CODE] SBU,
    J.[JOB-STATUS],
    CONCAT(IP.[PRIORITY-CODE], '- ',IP.DESCRIPTION) [INITIAL-PRIORITY],
    CONCAT(LP.[PRIORITY-CODE], '- ',LP.DESCRIPTION) [LATEST-PRIORITY],
    J.[DATE-LOGGED],
    J.[CURRENT-STAGE-CODE],
    J.[ORIG-LOGGED-VALUE] AS "LOGGED-VALUE",
    J.[TOTAL-VALUE],
    J.[SHORT-DESCRIPTION],
    J.[CONTRACTOR],
    C.[DESCRIPTION],
    J.[CL-ANALYSIS-CODE-ELEMENT],
    J.[CL_ANALYSIS_CODE_ELEMENT##2],
    J.[CL_ANALYSIS_CODE_ELEMENT##3],
    J.[CL_ANALYSIS_CODE_ELEMENT##4],
    J.[CL_ANALYSIS_CODE_ELEMENT##5],
    SH.[JOB-AMENDED]

    FROM

    [RM-JOB] AS J
    LEFT OUTER JOIN
    [RM-CONT] as C ON C.CONTRACTOR = J.CONTRACTOR
    RIGHT OUTER JOIN
    (SELECT 
           [JOB-NO], 
           CASE WHEN MAX([STAGE-CODE]) = ('11') THEN 'YES' ELSE 'NO' END AS "JOB-AMENDED"
    FROM
    [RM-STAGE-HISTORY] 
    WHERE [STAGE-CODE] IN ('06','11')
    GROUP BY [JOB-NO]) AS SH ON J.[JOB-NO] = SH.[JOB-NO] 

    LEFT JOIN
    [RM-PRIORITY] IP ON J.[INITIAL-PRIORITY] = IP.[PRIORITY-CODE]
    LEFT JOIN
    [RM-PRIORITY] LP ON J.[INITIAL-PRIORITY] = LP.[PRIORITY-CODE]
    LEFT JOIN
    [IH-LOCATION] L ON J.[PLACE-REF] = L.[PLACE-REF]
    LEFT JOIN
    [IH-LOC-ATTR] LA ON  J.[PLACE-REF] = LA.[PLACE-REF] AND LA.[ATTRIB-CODE] = 'SBU'

    WHERE

    J.[DATE-LOGGED] BETWEEN @DATE1 AND @DATE2
    AND
    J.[RAISED-BY] = @RAISEDBY
    AND
    LA.[SUB-ATTRIB-CODE] IN (@SBU)
    AND
    J.[LATEST-PRIORITY] IN (@Priority)
    AND
    L.[MGT-AREA] IN (@MGTAREA)

现在,@Date1、@Date2 和 @RAISEDBY 都是单值并且工作正常,但 @SBU、@Priority 和 @MGTAREA 都是多值。在所有三种情况下,我都将多值参数设置为允许多个值,并且在文本框操作中,我设置了所有三个参数以按照其他地方的建议拆分多个值: =SPLIT(JOIN(Parameters!SBU.Value , ","), ",")

但是,当我为@Priority 或@MGTAREA 选择多个值时,详细信息报告为空白。这是我第一次这样做,我想知道我是否做错了什么明显的错误,或者 SSRS 是否甚至可以在同一个钻取中处理三个多值参数。

感激地接受任何帮助,我已经盯着这个看了一天的大部分时间!

【问题讨论】:

    标签: tsql reporting-services ssrs-2012


    【解决方案1】:

    如果您的数据集查询直接在数据集中(即您没有使用存储过程),则无需对它们执行任何 SPLIT 和/或 JOIN 方法。 SSRS 将自动注入一个逗号分隔的列表来代替您查询中的 @parameters。

    确保参数属性中的参数数据类型设置为文本(即使它们是数字)

    【讨论】:

    • 参数设置为文本。查询本身当前位​​于 SP 中,但我在此处粘贴了 SP 代码以查看是否出错。明天我可能会尝试在客户端运行代码。
    【解决方案2】:

    您是否尝试在 Visual Studio 中执行详细报告(而不是作为子报告)?

    【讨论】:

    • 我已经在 SSMS 中使用一个参数测试了查询,它工作正常。明天我可能会尝试在 VS 中将其作为单独的报告运行,看看我的进展如何,干杯。
    【解决方案3】:

    我找到了解决方案。我试图将详细信息报告作为存储过程运行。这两个响应都使我尝试将详细信息报告作为客户端代码运行。它以这种方式完美运行。

    看来存储过程报表不喜欢多个多值参数!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多