如何将 SSRS 订阅时间设置为表达式

How to set SSRS subscription time as an expression

我有一份报告,报告的 StartDate 和 EndDate 参数使用下面的表达式作为默认值。

=DateAdd(DateInterval.Minute,0,DateAdd("h",7,DateAdd("h",-24,Today())))

=添加日期(DateInterval.Minute,0,添加日期("h",7,今天()))

当我执行报表时,报表是从前一天早上7点开始到今天早上7点。

我想将报告的开始时间和结束时间保持为这样 (07:00)。 我还想每天 7:30 AM 向客户发送报告,但报告需要根据开始日期和结束日期参数执行。

示例:今天 12.12.2019

订阅时间为 07:30 AM

这次报告需要运行: 开始日期:11/12/2019 07:00:00 结束日期:12/12/2019 07:00:00

但是当我每天和 7:30 上午安排订阅时,我收到了 7:30 上午前一天和今天 7:30 上午的报告。

我只想看 7:00am 到早上 7 点的报告。即使我更改预定时间。

你能帮我解决这个问题吗?如何编辑我的订阅? 是否可以在订阅的 "date/time from - date/time to" 字段中编写表达式?

顺便说一句,当我取消点击“使用默认”部分时,它总是需要 11-12-2019 甚至 2 天后 ☹ 开始时间必须是一天前的 07:00 AM 时间应该是那天 07:00 AM

你有什么建议吗?

谢谢

我解决了我的问题。有2种解决方案。

选项 1:

在报告设计中,如果必须让那些日期参数必须是 DATTEIME 并且允许时间因素,那么如果你想 运行 总是订阅昨天的报告 7:00 到今天 7:00 am 然后我不会依赖于发送任何基于表达式的参数值......我会在报表设计中设置 Date/Time 参数以允许空值并将空值作为订阅的默认值发送设置。

然后在报告 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 类型,那么始终在开始和结束的订阅参数中发送 =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

的报告