2016-12-27 4 views
1

Ich verwende derzeit SQL Server 2012 und Visual Studio 2012 für meine Projekte.Füllen von Datasets in SSRS mit dynamischer Abfrage einschließlich Deklarationsvariablen

Meine Frage ist, ich habe den folgenden Code unten und es enthält Variablen deklarieren. Grundsätzlich, wenn ich es in meinem SQL Server verwenden, stelle ich @StartDate zum 1. des laufenden Monats und die @EndDate bis zum letzten Tag des laufenden Monats (Dezember).

DECLARE @StartDate date 
DECLARE @EndDate date 

-- SET @StartDate = '20161201' 
-- SET @EndDate = '20161231' 

SELECT A.[TYPE_NAME], -- Type_Name 
    A.[STRT_DTTM], --Start Date 
    A.[END_DTTM], --End Date 
    B.[ASSIGNED_DT], --Assigned Date 
    CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL)) 
     THEN 1 
     ELSE 0 
     END AS 'OpenIndicator', 
    CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate 
     THEN 1 
     ELSE 0 
     END AS 'ClosedIndicator', 
    CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate 
     THEN 1 
     ELSE 0 
     END AS 'AssignedIndicator', 
FROM Report AS A  
    INNER JOIN Dimension AS B 
    ON A.[ID] = B.[ID] 
WHERE 1=1 
AND  A.[EXPIRE_DATE] = '12/31/9999' --Expire Date (Basically looking for active records.) 
AND  (A.[TYPE_NAME] like '%Bicycle%' 
    OR  A.[TYPE_NAME] like '%Car%') 

Bisher in SSRS habe ich stelle den über Code in einen Datensatz. Ich habe auch die 2 Parameter in SSRS StartDate und EndDate erstellt. Wenn ich versuche, einen einfachen Tablix basierend auf dem Dataset auszuführen, wird nichts angezeigt.

Ich habe die SET @StartDate = '20161201' und SET @EndDate = '20161231' auskommentiert.

Ich bin sehr begrenzt mit dem, was ich bei der Arbeit tun kann, deshalb kann ich leider auch nicht gespeicherte Prozeduren verwenden, weil das es einfacher machen könnte, denke ich.

Aber ich versuche, ein Sales wie Dataset von dem, was der Benutzer in die zwei Parameter StartDate und EndDate eingibt, aber ich habe Probleme damit in SSRS. Kann mir bitte jemand genau helfen, was zu tun ist, ich bin sehr verloren.

Versucht, im Code zu kommentieren, um es einfacher zu verstehen, und musste einige Dinge ändern, um nicht in Schwierigkeiten bei der Arbeit zu kommen.

+1

Vielleicht eine dumme Frage, aber Sie haben tatsächlich die SSRS Parameter auf Ihre Anfrage abgebildet Parameter in SSRS? nur die Parameter zu erstellen ist nicht genug in SSRS. Wenn Sie Parameter im SSRS-Bericht haben, müssen Sie sie nicht erneut in Ihrer Abfrage deklarieren. Stellen Sie nur sicher, dass die Parameter ordnungsgemäß der Abfrage zugeordnet sind. –

Antwort

1

Sie müssen keine Variablen in Ihrer Abfrage für das Dataset deklarieren, dies wird in der SSRS-Anwendungsschicht behandelt. Ihre Abfrage sollte so etwas wie ..

SELECT A.[TYPE_NAME],  -- Type_Name 
     A.[STRT_DTTM],  -- Start Date 
     A.[END_DTTM],  -- End Date 
     B.[ASSIGNED_DT], -- Assigned Date 
    CASE WHEN (CAST(A.[STRT_DTTM] AS DATE) <= @EndDate 
       AND (CAST(A.[END_DTTM] as date) > @EndDate OR A.[END_DTTM] IS NULL)) 
     THEN 1 
     ELSE 0 
     END AS 'OpenIndicator', 
    CASE WHEN CAST(A.[END_DTTM] as DATE) between @StartDate AND @EndDate 
     THEN 1 
     ELSE 0 
     END AS 'ClosedIndicator', 
    CASE WHEN CAST(B.[ASSIGNED_DT] as DATE) between @StartDate AND @EndDate 
     THEN 1 
     ELSE 0 
     END AS 'AssignedIndicator', 
FROM Report AS A  
    INNER JOIN Dimension AS B 
    ON A.[ID] = B.[ID] 
WHERE 1=1 
AND  A.[EXPIRE_DATE] = '12/31/9999' 
AND  (A.[TYPE_NAME] like '%Bicycle%' 
    OR  A.[TYPE_NAME] like '%Car%') 

werden, da Sie erwähnt haben, dass Sie bereits die Parameter in SSRS erstellt rechten Maustaste auf Ihre DataSet und gehen Sie zu Properties dann auf der Registerkarte Parameters, machen Sie Ihre SSRS Parameter abgebildet werden zu Ihren Abfrageparametern.

enter image description here

Und schließlich, wenn Sie die Standarddaten der 1 und letzten Tag des laufenden Monats sein wollen Sie Parameters gehen, Rechtsklick auf Properties gehen, gehen Sie auf Default Values Registerkarte und klicken Sie auf Add und Verwenden Sie die folgenden Ausdrücke.

Für 1. Tag des laufenden Monats

=Today.AddDays(1-Today.Day) 

Für Letzter Tag des laufenden Monats

=DateSerial(Year(Now()), Month(Now()), "1").AddMonths(1).AddDays(-1) 
+0

Vielen Dank das wurde viel klarer! – smul86

Verwandte Themen