SSRS文本参数绑定到SQL变量

时间:2019-07-09 13:32:27

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

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

以下是我正在使用的代码的摘要:

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)

2 个答案:

答案 0 :(得分:0)

您可以将日期时间转换为String,例如:

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);

答案 1 :(得分:0)

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

您快到了,在您的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'