[英]Can the value of a subscription parameter be set to an expression when creating an SSRS report subscription in SQL Server 2014?
[英]How to set SSRS subscription time as an expression
我有一份报告,报告的 StartDate 和 EndDate 参数使用下面的表达式作为默认值。
=DateAdd(DateInterval.Minute,0,DateAdd("h",7,DateAdd("h",-24,Today())))
=DateAdd(DateInterval.Minute,0,DateAdd("h",7,Today()))
我想像这样 (07:00) 保留报告的开始时间和结束时间。 我还想每天早上 7:30 将报告发送给客户,但报告需要根据开始日期和结束日期参数执行。
示例:今天 12.12.2019
订阅时间为早上 07:30
这次需要运行报告:StartDate:11/12/2019 07:00:00 EndDate:12/12/2019 07:00:00
但是当我每天和早上 7:30 安排订阅时,我收到了前一天早上 7:30 和今天早上 7:30 的报告。
我只想看早上 7:00 到早上 7 点的报告。 即使我更改预定时间。
你能帮我解决这个问题吗? 如何编辑我的订阅? 是否可以在订阅的“日期/时间从 - 日期/时间到”字段中编写表达式?
我解决了我的问题。 有2种解决方案。
选项1:
在报告设计中如果必须让那些日期参数必须是 DATTEIME 并且允许 TIME 因素,那么如果你想运行总是从昨天 7:00 到今天 7:00 am 订阅的报告,那么我会不依赖于基于表达式发送任何参数值……我会在报表设计中设置日期/时间参数以允许空值并从订阅设置中默认发送空值。
然后在报告 SP 中,您总是可以在顶部添加一个子句,例如
if @startDateTime is null AND @endDateTime is null
begin
set @startDateTime =CONVERT(VARCHAR(10), getdate(), 111);
set @startDateTime =dateadd(hh,7,( dateadd(d,-1,@startDateTime)))
set @endDateTime =dateadd(d,1,@startDateTime)
end
让其余的 SP 相同
选项 2:
如果您可以将报告参数更改为仅 DATE 类型,那么它很容易总是在您的订阅参数中为 Start 和 End 发送 =Today()
然后在报告 SP 中,您总是可以在顶部添加一个子句,例如
if @startDateTime = @endDateTime
begin
set @endDateTime =CONVERT(VARCHAR(10), @endDateTime, 111);
set @endDateTime =dateadd(hh,7,@endDateTime)
set @startDateTime =dateadd(d,-1,@startDateTime)
end
让其余的 SP 相同
如果他们可以将开始和结束日期参数设置为 DATE 而不是 DATETIME,则选项 2 更好。
任何方式使用这些选项中的任何一个都可以在 SP 中处理这个问题……如果他们想将时间从早上 7:00 更改为任何其他时间,您将来可以随时控制……无需更改报告设计只需更新 SP……2 分钟
您可以在一天中的任何时间安排此报告,它将始终向他们发送昨天 7:00 到今天 7:00 的报告
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.