Requête SQL dynamique avec SSRS

Comment créer une requête SQL dynamique dans un dataset SSRS ? Avec Reporting Services, les champs utilisés dans un objet tableau par exemple sont liés à la base de données. Cela grâce à un jeu de données ou dataset qui est lui même le résultat d’une requête SQL. Ce dataset se rattache à une data source ou source de données.

En effet, cette source de données contient une connexion. Par exemple à une base de données ou à un cube OLAP utilisés comme sources. La restitution des données rend possible la création de rapports statiques grâce à des requêtes figées. Ou encore des rapports dynamiques avec des requêtes dynamiques.

Utiliser une requête SQL dynamique avec SSRS

Utiliser des filtres pour tirer le meilleur parti des requêtes SQL Server et afficher une sélection pertinente des données.

Autrement dit, sans filtre toutes les données sont affichées. Ou alors les données sont restreintes par exemple via la date du jour, du mois ou le trimestre en cours.

Les filtres permettent à l’utilisateur de sélectionner une année, un produit ou un client particulier. Il est recommandé d’implémenter un maximum de fonctions dynamiques dans les rapports SSRS.

En plus de cela, l’utilisation conjointe de plusieurs paramètres permet d’affiner la sélection des données.

Exemples de code SQL dynamique dans un rapport Reporting Services

Reporting Services est l’outil de Reporting et de Tableaux de bord de la suite Microsoft BI. Il est d’ailleurs complètement Responsive depuis la version SQL Server 2016. C’est à dire que les rapports s’adaptent parfaitement aux différents formats d’écrans. C’est à dire : écrans de bureaux (desktop), ordinateurs portables (laptops), aux tablettes et aux smartphones.

Il existe plusieurs approches pour gérer les filtres, voici deux options simples.

Première solution avec une requête SQL et une formule

La solution la plus facile à maintenir est la suivante, avec un champ CITY pour sélectionner la ville.

Au préalable, le système évalue le paramètre PARAMETERS!PARAMETER2.VALUE en fonction d’un premier paramètre visible. Paramètre sélectionné depuis une liste de choix par l’utilisateur, à l’exécution du rapport.

SELECT 	*
FROM 	TABLE1
WHERE 	CITY = PARAMETERS!PARAMETER2.VALUE

Pour ce faire, dans les propriétés Expression du paramètre PARAMETER2, insérer un code avec une fonction fonctionnelle, comme celui-ci:

=IIF(Parameters!Test.value = "Valeur","CONDITION1", "CONDITION2")

Deuxième solution avec des conditions dans la requête SQL SSRS

Voici la deuxième solution qui est d’écrire en dur les deux paramètres dans l’expression de la requête. Elle est moins élégante et plus complexe à développer avec plusieurs filtres :

IF PARAMETERS!PARAMETER.VALUE = UNEVALEUR
SELECT * FROM TABLE1 WHERE CHAMPS = CONDITION1
ELSE
SELECT * FROM TABLE1 WHERE CHAMPS = CONDITION2

Il est donc préférable d’utiliser la première solution.

Cet article présente comment créer une requête SQL dynamique dans un dataset SSRS.

Pour aller plus loin, voici comment déployer un rapport SSRS depuis Visual Studio.

Soyez le premier à commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.


*