【问题标题】:SSRS text parameter tied to SQL variableSSRS 文本参数绑定到 SQL 变量
【发布时间】:2019-07-09 13:32:27
【问题描述】:

我目前有一个包含两个参数的报告。这两个参数的数据类型都是“文本”。我在将所需值从 SQL 传递给这些参数时遇到问题,因为在 SQL 中表示这些参数的变量不能是文本,因为变量现在不能成为 SQL 中的“文本”数据类型。现在的变量是“日期时间”数据类型。我尝试在 SQL 中使用其他一些文本,如数据类型,如 nvarchar、nchar、char、varchar 等,但这些都没有解决我的问题。我想知道是否有一种方法可以在不将 SSRS 中的参数日期类型更改为日期/时间的情况下将所需的数据传递给 SSRS?

这是我正在使用的代码的 sn-p:

DECLARE @CBFCycleStart as datetime
DECLARE @CBFCycleEnd as datetime

SET @CBFCycleStart =
(SELECT TOP 1 [CycleStartedOn]         
FROM [IPEC_P_CIP_TKB_PREFLT]
WHERE [CycleComplete] = '1' 
ORDER BY [CycleStartedOn] DESC) 

SET @CBFCycleEnd = 
(SELECT TOP 1 [CycleEndedOn] FROM 
[IPEC_P_CIP_TKB_PREFLT] 
WHERE [CycleComplete] = '1' 
ORDER BY [CycleStartedOn] DESC)

【问题讨论】:

  • “从 SQL 传递参数的值”是什么意思?
  • 我的存储过程数据类型传递给 SSRS 参数就是我的意思,如果这更有意义的话。
  • 这没有任何意义。我怀疑你可能误用了“通过”这个词,但我不知道。你没有提供足够的信息。请记住,我们都没有您的报告,也没有提供足够的信息来从头开始完全重现该问题。
  • 我有一个从 SQL 表中提取数据的存储过程。我提到的存储过程变量包含它从 SQL 表中提取的数据。然后我将这些值放入变量中,并希望将它们传递给 SSRS 中的参数。 SQL 中的变量是日期时间,SSRS 参数是文本。希望这有助于澄清一些事情。
  • 从答案和您的回复中可以清楚地看出您在这里没有提供足够的信息。到目前为止所有的建议都是有意义的(至少对我来说)。我可以建议您发布更多信息,包括用于获取数据最终结果数据的 1. 主数据集查询。 2. 报告参数设置。 3. 错误消息而不是“它不起作用”。 4.您所做的任何测试,例如在报告参数中手动输入日期,如果是否有效,5.日期/字符串参数旨在接受什么格式以及此类字符串的样本。

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


【解决方案1】:

您可以将日期时间转换为字符串,例如:

DECLARE @CBFCycleStart nvarchar(50);
SET CBFCycleStart=CONVERT(nvarchar(50), (SELECT TOP 1 [CycleStartedOn]         
FROM [IPEC_P_CIP_TKB_PREFLT]
WHERE [CycleComplete] = '1' 
ORDER BY [CycleStartedOn] DESC), 120);

【讨论】:

    【解决方案2】:

    我相信您正在尝试从存储过程的结果集中设置报告参数。

    你快到了,在你的 SP 中再添加一行。

    DECLARE @CBFCycleStart as datetime
    DECLARE @CBFCycleEnd as datetime
    
    SET @CBFCycleStart =
    (SELECT TOP 1 [CycleStartedOn]         
    FROM [IPEC_P_CIP_TKB_PREFLT]
    WHERE [CycleComplete] = '1' 
    ORDER BY [CycleStartedOn] DESC) 
    
    SET @CBFCycleEnd = 
    (SELECT TOP 1 [CycleEndedOn] FROM 
    [IPEC_P_CIP_TKB_PREFLT] 
    WHERE [CycleComplete] = '1' 
    ORDER BY [CycleStartedOn] DESC)
    
    **select @CBFCycleStart as CBFCycleStart  , @CBFCycleEnd as CBFCycleEnd** 
    

    将此数据集命名为 getStartAndEnd

    这将为您提供一个包含一行的数据集。

    现在转到您的参数并将值设置为此数据集 getStartAndEnd 的默认值

    补充说明:

    我认为您可以将您的 SP 重写为:

    select CBFCycleStart = MAX([CycleStartedOn])
         , CBFCycleEnd  = MAX(CycleEndedOn)       
    FROM [IPEC_P_CIP_TKB_PREFLT]
    WHERE [CycleComplete] = '1' 
    

    【讨论】:

    • 该评论没有帮助。这正是您通过 SQL 在 SSRS 中设置参数的方式。
    • 对不起基思。我试过了,但它似乎没有解决我的问题...感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 2011-08-04
    • 2023-03-29
    • 2021-12-01
    • 2013-07-25
    相关资源
    最近更新 更多