簡體   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