12 juin 2006

Reporting Pack SPS pour SQL2k5

Si vous installez ce Reporting Pack sur une plateforme française, il est certain que vous ayez des problèmes. Après quelques temps sur ce RS, j’ai réussi à le faire fonctionner.

Manque de chance, suite à une mauvaise manipulation, j’ai supprimé tout les scripts que j’avais modifié, mais je vais essayer de partager mon xp dessus.

D’abord, il faut que les script qui génère les données dans DimDate et DimTime soient correcte. En effet, ces deux tables doivent respectivement représenter tous les jours (date) jusqu’en 2009 et toutes les secondes dans une journée. Il faudra donc bien sélectionner le format de date grâce à la commande SQL FormatDate.

Ensuite, il faut modifier des procédures stockées dans dbSPSReporting. En effet, les clauses where pour trouver une date sont un peu spéciale.

Exemple :

WHERE DateFull = CONVERT(VARCHAR(10),     DATEADD(DAY, -@Range, GETDATE()), 1) (DateFull étant de type date)

Dans chaque procédure stocké, il existe le bloc suivant :

    DECLARE @Range int

    DECLARE @Type char

    DECLARE @EndDate int

    SET @EndDate = 1


 

    SET @Range =
CONVERT(INT,
LEFT(@DateRange,
Len(@DateRange)
- 1))

    SET @Type =
RIGHT(@DateRange, 1)

    

    IF @Type =
''D''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd


WHERE dd.DateFull =
CONVERT(VARCHAR(10),

    DATEADD(DAY,
-@Range,
GETDATE()), 1)


 

    ELSE
IF @Type =
''M''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd


WHERE dd.DateFull =
CONVERT(VARCHAR(10),

    DATEADD(MONTH,
-@Range,
GETDATE()), 1)


 


 

    ELSE
IF @Type =
''Y''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd


WHERE dd.DateFull =
CONVERT(VARCHAR(10),

    DATEADD(YEAR,
-@Range,
GETDATE()), 1)

Ce bloc est a remplacé par

DECLARE @Range int

    DECLARE @Type char

    DECLARE @EndDate int

    SET @EndDate = 1


 

    SET @Range =
CONVERT(INT,
LEFT(@DateRange,
Len(@DateRange)
- 1))

    SET @Type =
RIGHT(@DateRange, 1)

    

    IF @Type =
''D''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd

--     WHERE dd.DateFull = CONVERT(VARCHAR(10),

--        DATEADD(DAY, -@Range, GETDATE()), 1)

WHERE dd.DateFull =     DATEADD(DAY,
-@Range,
GETDATE())

    ELSE
IF @Type =
''M''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd

--     WHERE dd.DateFull = CONVERT(VARCHAR(10),

--        DATEADD(MONTH, -@Range, GETDATE()), 1)

WHERE dd.DateFull =     DATEADD(MONTH,
-@Range,
GETDATE())


 

    ELSE
IF @Type =
''Y''

    SELECT @EndDate = dd.DateSurKey

     FROM DimDate dd

--     WHERE dd.DateFull = CONVERT(VARCHAR(10),

--        DATEADD(YEAR, -@Range, GETDATE()), 1)

WHERE dd.DateFull =     DATEADD(YEAR,
-@Range,
GETDATE())

Ce post est juste un retour d’expérience, il n’a pas la prétention d’être une solution.

Aucun commentaire: