Les invites sous BO permettent de filtrer les résultats d’une requête en fonction d’une ou de plusieurs valeurs d’un champ.
C’est utile par exemple pour avoir un rapport qui donne le chiffre d’affaires d’une certaine région, qui est à choisir lors du rafraichissement du rapport.
Ce rapport sera donné au responsable de la région concernée.
Cependant on a généralement aussi un rapport qui lui s’applique sur toutes les régions, un rapport « global ».
La solution la plus simple est de dupliquer le rapport en enlevant l’invite, mais la maintenance sera double.
On peut aussi sélectionner toutes les valeurs dans l’invite, mais il faudra penser à modifier le rapport quand on rajoutera une région, pour rajouter la valeur de cette nouvelle région à l’invite.
Le plus simple est de rajouter une valeur spécifique pour l’invite, qui correspond à toutes les valeurs possibles.
Cela se traduit par le rajout d’une simple condition OU dans la requête.
Cela donne en SQL :
( maTable.region in @Variable('Region') or 'TOUT' in @Variable('Region') )
Ici si on entre TOUT pour l’invite, la requête prendra toutes les régions, en effet la 2ème condition sera toujours vérifiée.
Bien sûr, il n’y a pas de région « TOUT ».
Pour implémenter la 2ème solution sous BO, on peut :
– créer un objet spécifique, dont la formule est « TOUT », sans table associée
– créer un filtre prédéfini
Remarques :
– il existe d’autres solutions, mais je trouve que c’est la plus simple et la plus compréhensible pour une invite à valeurs multiples
– il vaut mieux utiliser le @Prompt pour la compatibilité avec Webi