微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SSRS 创建以 15 分钟间隔更新的临时日期时间表 - 参数未显示

如何解决SSRS 创建以 15 分钟间隔更新的临时日期时间表 - 参数未显示

我正在使用 SSRS 中的以下代码创建一个增量为 15 分钟的临时日期时间表:

--declare @Id varchar(20),@startdate datetime,@enddate datetime
--set @ID = 'J00000041'
--set @startdate = '20210601'
--set @enddate = '20210630';

create table #tempcalendar ([dispdate] [datetime],intervaldate [datetime],intervaltime [datetime])


    while @StartDate <= @EndDate+1
        begin
            insert into #tempcalendar values(@StartDate,convert(varchar,@StartDate,110),convert(varchar(5),108) )
            set (@StartDate) = dateadd(minute,15,@StartDate)
            
        end

当我尝试在 SSRS 中运行它时,其中一个参数没有出现在“定义查询参数”对话框中,并且我收到消息“必须声明标量变量”错误。我已经查明了代码中的问题:

set @StartDate = dateadd(minute,@StartDate)

我能够在 SSMS 中执行此代码(这是我最初创建它的地方),但是我似乎无法在 SSRS 中找到任何可能出错的信息。我也试过在 @StartDate 中加上括号来显示 set (@StartDate) = dateadd(minute,@StartDate),但这没有用。

感谢您的帮助

解决方法

SSRS 希望能够返回数据集中 SQL 的元数据。这就是它为您确定列名和数据类型的方式。这也是数据集中只能有一个 select 语句的原因。

您可以将查询包装在存储过程中。 SSRS 可以调用过程并传入参数。该过程应该有一个 select 语句,用于返回要处理的报告的结果。该过程可以根据您的需要进行复杂的处理,并将该代码从嵌入报告中提取出来。

,

我之前在 t-sql 中设置从 SSRS 传入的变量时看到过这一点。

我认为问题在于 SSRS 误解了查询。

我通过将另一个变量设置为传入的值来解决这个问题。 例如

DECLARE @StartDate2 datetime
SET @StartDate2 = @StartDate

.. 然后在查询的其余部分使用 @StartDate2

还要检查变量/参数名称的每个实例是否完全相同,它们区分大小写。如果您传入 @X 但引用 @x SSRS 会认为这是一个新参数。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。