![](/img/trans.png)
[英]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.