2016-05-26 1 views
0

Ich versuche, einen SSRS-Beispielbericht zu erstellen, der mehrere ausgewählte Datenbereichsparameter zulässt. Ich war in der Lage, den Bericht zu erstellen, der es dem Benutzer erlaubt, einen der ReportPeriod mit der folgenden Abfrage auszuwählen. Jetzt möchte ich dem Benutzer erlauben, mehr als einen Parameter auszuwählen, und das exportierte Excel wird jedes Ergebnis in einem separaten Blatt haben. In MS Visual Studio habe ich den Parameter auf "Mehrere Werte erlauben" gesetzt. Wie soll ich mein SQL ändern?SSRS-Bericht, der die Auswahl mehrerer Datumsbereichsparameter zulässt

DECLARE @StartDate DATETIME 
DECLARE @EndDate DATETIME 
DECLARE @ReportPeriod CHAR(1) 

IF @ReportPeriod='D' 
BEGIN 
    SET @StartDate= DATEADD(day,DATEDIFF(day,1,GETDATE()),0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

ELSE IF @ReportPeriod='W' 
BEGIN 
    SET @StartDate = DATEADD(wk, DATEDIFF(wk,6, GETDATE()),-1) 
    SET @EndDate = DATEADD(wk, DATEDIFF(wk, 6, GETDATE()), 6) 

END 

ELSE IF @ReportPeriod='M' 
BEGIN 
    SET @StartDate=DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0) 
    SET @EndDate= DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, 0) 
END 

ELSE IF @ReportPeriod='X' -- Get Month To Date 
BEGIN 
    SET @StartDate=DATEADD(month, DATEDIFF(month, 0, GETDATE()), 0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

ELSE IF @ReportPeriod='Y' -- Get Year To Date 
BEGIN 
    SET @StartDate=DATEADD(yy, DATEDIFF(yy,0,getdate()), 0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

SELECT @StartDate AS 'StartDate', @EndDate AS 'EndDate' 
+0

Wie werden Sie Mutiple Datumsbereich auswählen? etwas fehlt in der Frage ?? Bitte zeigen Sie den Repot mit Parametern !! – Hiten004

+0

@ Hiten004 Die Berichte selbst verwenden nur 2 Parameter: StartDate und EndDate, wie Sie in der SELECT-Anweisung sehen. Wenn ich den Bericht in Visual Studio erstellt habe, erstelle ich den Parameter ReportPeriod mit den Bezeichnungen 'D', 'W', 'M', 'X', 'Y'. Je nachdem, welcher Wert von ReportPeriod ausgewählt wurde, wird das entsprechende StartDate und EndDate festgelegt. – kemflan

Antwort

0

für einen bestimmten Wert in einem Mehrwertparameter zu überprüfen, versuchen Sie Ihren Vergleich zu

Wechseln nur
IF 'D' IN(@ReportPeriod) 
BEGIN 
    SET @StartDate= DATEADD(day,DATEDIFF(day,1,GETDATE()),0) 
    SET @EndDate= DATEADD(day,DATEDIFF(day,0,GETDATE()),0) 
END 

Allerdings, wenn Ihr Bericht ein Startdatum und ein Enddatum hat, es klingt wie Sie Außerdem müssen Sie die Datumsparameterlogik ändern, um mehrere Zeiträume mit unterschiedlichen Start- und Enddaten zu berücksichtigen.