繁体   English   中英

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

[英]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()))

当我执行报表时,报表是从前一天早上7点开始到今天早上7点。 在此处输入图像描述

我想像这样 (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 点的报告。 即使我更改预定时间。

你能帮我解决这个问题吗? 如何编辑我的订阅? 是否可以在订阅的“日期/时间从 - 日期/时间到”字段中编写表达式?

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

在此处输入图像描述

你有什么建议吗?

谢谢

我解决了我的问题。 有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM