Home / Reporting Services / SSRS Best Practice I – Beperk datasets

SSRS Best Practice I – Beperk datasets

presentation_1_cancel_128In SQL Server Reporting Services kun je datasets aanmaken.  Een van de best-practices is om deze datasets tot een minimum te beperken, het liefst zelf maar 1. Zodra iemand ooit het rapport moet aanpassen hoeft hij niet vele datasets langs om alles na te zoeken maar kan hij volstaan met een dataset.


Vaak zul je in een rapportage gebruik maken van parameters. Veel mensen zullen een aparte dataset maken voor iedere parameter. Dit is echter niet nodig. Met een simpel truukje kun je een dataset namelijk dynamisch maken. Stel dat je een rapport hebt met de Internet Sales bij de database Adventureworks. Je laat de gebruiker een keuze maken: ‘Klant’ en ‘Land’ . Als de gebruiker niets kiest krijgt hij alles te zien. Als hij een klant kiest moet hij alleen de klanten tonen die hij heeft gekozen. Als hij een land kiest moet het rapport alleen de data tonen van dat land. De vraag is nu hoe je dit simpel kunt oplossen in een Query.

Onderstaand voorbeeld toont hoe je dit kunt oplossen in je dataset. Geen moeilijke dingen in het rapport maar aanpakken bij de bron;

{geshi xml:lang=”tsql” lines=”false”}
USE AdventureWorksDW
GO

DECLARE @GeselecteerdeKlantID AS INT
DECLARE @GeselecteerdeLandID AS INT

SET @GeselecteerdeKlantID = 0
SET @GeselecteerdeLandID = 2

SELECT  DC.CustomerKey,
DC.FirstName,
DG.GeographyKey,
DG.EnglishCountryRegionName,
SUM(FIS.SalesAmount) AS SalesAmount
FROM    FactInternetSales AS FIS
LEFT OUTER JOIN DimCustomer AS DC ON FIS.CustomerKey = DC.CustomerKey
LEFT OUTER JOIN DimGeography AS DG ON DC.GeographyKey = DG.GeographyKey
WHERE   (
ISNULL(@GeselecteerdeKlantID, 0) = 0
OR DC.CustomerKey = @GeselecteerdeKlantID)
AND (
ISNULL(@GeselecteerdeLandID, 0) = 0
OR DG.GeographyKey = @GeselecteerdeLandID)
GROUP BY DC.CustomerKey,
DC.FirstName,
DG.GeographyKey,
DG.EnglishCountryRegionName{/geshi}

 

Check Also

prevent-divide-by-zero-ssrs

Prevent Divide by Zero in SSRS

In a previous post, I wrote about how to prevent the divide by zero issues …

Geef een reactie

Je e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *