2016-09-08 44 views
0

很新的SSRS如此忍受我...如何存儲過程變量添加到SSRS 2012個標籤

我創建了一個基於存儲過程和SSRS報告作爲程序的一部分,我計算起始日期EndDate爲我的報告。我需要在報告的標題中使用這兩個日期,但這些變量不是從存儲過程創建的數據集的一部分。

如何將這些變量添加到報告的標題?

下面是代碼:

DECLARE @ThisDate date; 
SET @ThisDate = getdate(); -- Current date 

DECLARE @sdate AS int 
SELECT @sdate = CONVERT(int, CONVERT(varchar(10), dateadd(yy, datediff(yy, 0, @ThisDate) - 2, 0), 112)) -- Beginning of previous 2 year 

DECLARE @edate AS int 
SELECT @edate = CONVERT(int, CONVERT(varchar(10), dateadd(mm, datediff(mm, -1, @ThisDate) - 1, -1), 112)) -- Last Day of previous month 

希望我的報告顯示:

從@sdate通過@edate(從2014年1月1日至2016年8月31日)

我感謝幫助!

回答

0

你現在的樣子,我想補充一個SELECT行數據集中使用:

SELECT @sdate as START_DATE, @edate AS END_DATE 

你的表情就必須使用查找來從數據集中獲取值:

= 「從」 & FIRST(領域!START_DATE.Value, 「數據集1」)& 「到」 & FIRST(領域!END_DATE.Value, 「數據集1」)

然而,更好的方法做你想要的是使用SSRS 參數計算您的START_DATE和END_DATE,然後在需要開始日期和結束日期時使用參數。

START_DATE參數 -

日期類型:DATE

可用值表達:

="01/01/" & (YEAR(TODAY) - 2) 
+0

感謝您的幫助漢諾威!所以我決定按照第二個選擇併爲Start_Date和End_Date添加參數。我添加了默認值並從報告中隱藏它們,以便它們僅用於報告標題。我在StoreProc使用的起始日期計算是 「SELECT @sdate = CONVERT(INT,CONVERT(VARCHAR(10),DATEADD(YY,DATEDIFF(YY,0,@ThisDate) - 2,0),112))」 ..它可能是-3取決於IF語句。根據您的建議(並添加條件)「= IIf(月(今日)= 1,」01/01 /「和(年(今日)-3),」01/01 /「和年(今日) - 2))「。 – MROS65

+0

但是,我havong的End_Date計算問題需要從前一個月的最後一天。我在StoreProc「SELECT @edate = CONVERT(int,CONVERT(varchar(10),dateadd(mm,datediff(mm,-1,@ThisDate) - 1,-1),112))」 m試圖建立在報告上,但不能得到轉換爲文本「= dateadd(DateInterval.month,datediff(DateInterval.month,-1,TODAY)-1,-1)」。 End_Date被定義爲文本,即使我把它變成鍵入日期我得到...不能轉換爲鍵入'日期'... – MROS65

+0

有可能是一種更簡單的方法來獲得End_Date(上個月從今天的最後一天),但我無法找到它:-( – MROS65