如何将 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
的报告
我有一份报告,报告的 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
的报告