Conditionnel Liste Déroulante avec SSRS
J'ai créé un rapport SSRS avec un menu pour paramétrer les données. Cela fonctionne très bien. J'ai maintenant besoin d'ajouter un autre paramètre pour filtrer le rapport un peu plus loin. Par exemple, j'ai une liste déroulante emplacement, qui montre la zone, pays, région, etc. J'ai besoin d'ajouter une autre liste déroulante qui est la personne à charge sur la première liste déroulante. Donc, si je sélectionne "pays" dans le 1er menu déroulant, je montre la liste des pays dans la 2ème liste déroulante ou si je sélectionne la Région - je afficher la liste de Régions dans la 2ème liste déroulante. Pays, Zone, de la Région les données sont stockées dans des tables différentes. Donc, fondamentalement, ma requête doit être assez intelligent pour exécuter la requête sql appropriée basée sur la 1ère liste déroulante de sélection.
Merci beaucoup pour toute aide donnée.
Vous devez vous connecter pour publier un commentaire.
L'une des puissantes fonctionnalités de Reporting Services, c'est que tout est une expression, y compris le jeu de données SQL.
Disons que votre premier paramètre (celui qui décrit comment sélectionner) est appelée
Location
et il sélectionne une liste des endroits tels que le pays, la région, etc. Peut-être que vous obtenez à partir d'une table qui a unLocationId
et unDescription
comme suit:Vous raccordez le paramètre Emplacement de cette requête pour obtenir votre liste déroulante emplacement sélecteurs pour le
Location
paramètre.Maintenant créer un deuxième paramètre appelé
Select
où nous voulons sélectionner à partir d'une liste de pays ou de régions. Pour faire simple, je vais supposer, il existe seulement deux lieux: Pays avec un LocationId de la 1 et de la Région avec un LocationId de 2.Créer un nouvel ensemble de données appelé
Selections
et ajouter manuellement des champs appeléId
etDescription
. Branchez votreSelect
paramètre pour cet ensemble de données. Maintenant, pour l'Instruction SQL de laSelections
jeu de données, entrez l'expression suivante:Donc, où le
Location
paramètre est défini sur 1 (Pays) que vous sélectionnez dans le Pays de table, sinon vous sélectionnez l'une des Régions de la table. Vous alias les noms de champ de sorte que vous obtenez des champs nommés pour votre jeu de données pour utilisation dans leSelect
paramètre de requête. Évidemment, vous pouvez l'étendre à davantage de sélections en tant que de besoin.Vous avez l'idée mais c'est un peu fragile, à chaque fois que vous voulez ajouter un nouveau type d'emplacement, vous devez passer par tous vos rapports et mise à jour de l'instruction SQL de la
Selections
dataset. C'est fastidieux, et personne ne veut que de l'emploi. Ce que nous voulons, c'est un système automatisé où tous les rapports d'obtenir les nouvelles sélections lorsqu'ils sont ajoutés.Donc, nous allons ajouter une colonne à l'emplacement de la table, appelée SQLStatement. Pour le Pays d'affilée, ce sera la valeur:
Pour la Région de la ligne, l'occurrence de SQLStatement champ a la valeur:
Maintenant l'emplacement de la table a la valeur de l'occurrence de SQLStatement pour le
Selections
dataset. Vous ne pouvez pas l'utiliser directement (votre jeu de données était juste retour de la valeur de l'instruction SQL champ, de ne pas l'exécuter), mais vous voulez avoir quelque chose que renvoie cette chaîne de caractères comme l'expression à utiliser pour l'instruction SQL de laSelections
dataset. Code personnalisé peut être utilisé pour ce faire. Donc l'expression à utiliser pour leSelections
jeu de données va être quelque chose comme ceci:Et puis vous avez un code personnalisé fonction comme ceci (parties significatives à gauche en sortant):
Lorsque vous voulez ajouter un autre choix d'un emplacement, par exemple les continents, tout ce que vous avez à faire est d'ajouter une autre ligne à l'emplacement de la table, dire LocationId = 3, Description = Continent et de SQLStatement =
SELECT ContinentId AS Id, ContinentName AS Description FROM Continents
et maintenant, à chaque rapport que vous avez choisit par emplacement sera en mesure d'utiliser les Continents.Premier jeu de données ajouter cette SQL
En supposant que le nom que les données présentées ci-dessus du paramètre @pays ajoutez le code SQL suivant sur la deuxième série de données
C'est très simple. Supposons que les données de la table “ON”, comme suit:
Ex:- Requête pour le paramètre de Rapport (@Location_Type1):
Requête pour le deuxième Paramètre de Rapport:
S'il vous plaît laissez-moi savoir si ce n'est pas clair.