Comment créer une requête SQL dynamique dans un dataset SSRS ?
Avec SQL Server Reporting Services (SSRS), les champs utilisés dans un objet de type tableau sont liés à la base de données et donc à une requête, de préférence dynamique. Mais comment la rendre dynamique ? 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.
Table of Contents
1. 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.
2. Exemples de code SQL dynamique avec 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.
2.1 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")
2.2 Deuxième solution avec des conditions dans la requête SQL
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
3. Conclusion sur les requêtes dynamiques SSRS
Ce tutoriel SSRS présente 2 options pour créer une requête SQL dynamique dans un dataset. Il est donc préférable d’utiliser la première solution pour pouvoir centraliser le code dynamique directement dans les expressions et les réutiliser dans plusieurs requêtes. Pour aller plus loin, voici comment déployer un rapport SSRS depuis Visual Studio.
Soyez le premier à commenter