2016-09-08 4 views
0

Sehr neu zu SSRS so tragen hinzuzufügen mit mir ...Wie gespeicherte Prozedur Variablen SSRS 2012 Labels

ich einen SSRS-Bericht erstellt für eine gespeicherte Prozedur basiert und im Rahmen dieses Verfahrens berechne ich ein Startdate und Enddatum für meinen Bericht. Ich muss diese zwei Daten in dem Titel des Berichts verwenden, aber diese Variablen sind nicht Teil des Datasets, das aus der gespeicherten Prozedur erstellt wird.

Wie füge ich diese Variablen zum Titel des Berichts hinzu? Hier

ist der Code:

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 

meinen Bericht angezeigt werden soll:

Von @sdate durch @edate (von 2014.01.01 bis 2016.08.31)

Ich schätze die Hilfe!

Antwort

0

Die Art und Weise Sie es jetzt haben, würde ich eine SELECT-Linie zu verwenden, in einem Datensatz hinzufügen:

SELECT @sdate as START_DATE, @edate AS END_DATE 

würde Ihr Ausdruck einen Nachschlag, um die Werte aus dem Datensatz zu erhalten verwenden müssen:

= "Aus" & FIRST (Fields! START_DATE.Value "DataSet1") & "bis" & FIRST (Fields! END_DATE.Value "DataSet1")

JEDOCH der bessere Weg zu tun, was Sie wollen, ist zu Verwenden Sie SSRS Parameter, um Ihr START_DATE und END_DATE zu berechnen und dann die Parameter zu verwenden, wenn Sie das Start- und Enddatum benötigen.

START_DATE Parameter -

Datum Typ: DATUM

Verfügbar Wert Ausdruck:

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

Danke für Ihre Hilfe Hannover! Also habe ich beschlossen, Ihrer zweiten Wahl zu folgen und Parameter für Start_Date und End_Date hinzuzufügen. Ich füge Standardwerte hinzu und verstecke sie aus dem Bericht, so dass sie nur für den Berichtstitel verwendet werden. Die Start_Date-Berechnung, die ich auf dem StoreProc verwendete, ist "SELECT @sdate = CONVERT (int, KONVERT (varchar (10), Datumadd (yy, datediff (yy, 0, @ThisDate) - 2, 0), 112))" .. .Es könnte ein -3 sein, abhängig von einer IF-Anweisung. Die Berechnung für den Bericht entspricht Ihrer Empfehlung (und fügt die Bedingung hinzu) "= IIf (Monat (heute) = 1," 01/01/"& (JAHR (HEUTE) - 3)," 01/01/"& (JAHR (HEUTE) - 2)) ". – MROS65

+0

ABER, ich habe havong Probleme mit der End_Date Berechnung, die der letzte Tag des vorherigen Monats von HEUTE sein muss. Ich habe dies im StoreProc verwendet "SELECT @edate = CONVERT (int, CONVERT (varchar (10), Datumadd (mm, datediff (mm, -1, @ ThisDate) - 1, -1), 112))" und ich ' Ich versuche, dies auf dem Bericht zu bauen, kann aber keine Umwandlung in Text erhalten "= dateadd (DateInterval.month, datediff (DateInterval.month, -1, TODAY) - 1, -1)". End_Date wird als Text definiert und selbst wenn ich es so ändere, dass ich Datum erhalte, das ich bekomme ... kann ich nicht in den Typ 'Date' umwandeln ... – MROS65

+0

Es gibt wahrscheinlich einen einfacheren Weg, um das End_Date zu erhalten (letzter Tag des vorherigen Monats von HEUTE), aber ich kann es nicht finden :-( – MROS65