我目前有一个带有两个参数的报告。这两个参数的数据类型均为“文本”。我遇到了一个问题,即将所需的值从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)
答案 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'