2009-06-27 7 views
11

J'ai créé un rapport dans SSRS avec deux paramètres de rapport. Je voudrais que le second mette à jour ses valeurs en fonction de la sélection dans le premier. Le premier est une liste d'agents de vente, et le second est une liste de distributeurs. Chaque agent peut avoir plusieurs distributeurs. Donc, si l'utilisateur du rapport sélectionne un agent, j'aimerais que seuls ses distributeurs apparaissent dans la liste pour les deuxièmes paramètres. Évidemment, les valeurs des paramètres proviendront d'une requête, mais je ne sais pas comment la relier à la liste après avoir sélectionné un agent.Mise à jour des paramètres de rapport en fonction de la sélection des paramètres? (SSRS)

Répondre

12

Cela fonctionne automagiquement si vous commandez vos paramètres et des jeux de données correctement

  • Tout d'abord, mettre en place un ensemble de données primaire (rapport), puis un ensemble de données pour chaque menu déroulant des paramètres. Code la clause WHERE dans les ensembles de données pour rendre les dépendances correctes à travers les variables de paramètre
  • Deuxièmement, commandez vos paramètres dans le rapport | Le menu des paramètres de sorte que la première variable/paramètre que vous voulez que l'utilisateur remplisse soit en haut et que le second dataset dépende de ce paramètre. Suivez cette commande à travers les paramètres; le (s) dernier (s) paramètre (s) doit (doivent) être celui (s) dont dépend le jeu de données du rapport.
  • Répéter pour les paramètres suivants

Cela fonctionnera si votre WHERE clause dans les ensembles de données deuxième et les suivants ont des variables qui SSRS sont peuplées de connaît les paramètres précédents. Par exemple, j'ai trois jeux de données de la base de données vénérable pubs (échantillon en 2000).

pubslist est utilisé pour alimenter le paramètre @p et ressemble à ceci:

select pub_id, pub_name from publishers 

titleslist Remplit le paramètre @t et ressemble à ceci:

select title_id, title from titles where pub_id = @p 

Enfin, reportdataset ressemble ceci:

select title, price, ytd_sales from titles where title_id = @t 

Le l'ordre des paramètres dans le menu Report | Report Parameters est crucial; Parce que les jeux de données doivent être exécutés dans l'ordre indiqué ci-dessus et que le paramètre @t est dans un jeu de données qui repose sur le paramètre @p défini en premier, nous déplaçons @p en haut de la liste. Maintenant, SSRS évalue l'ensemble de données nécessaire pour remplir la liste déroulante du premier paramètre avec des étiquettes. Il repose sur un jeu de données qui n'a pas besoin de paramètre, donc peut être produit immédiatement. Ensuite, après avoir obtenu cette valeur de paramètre, il peut remplir la liste déroulante du second paramètre. Cela entraîne à son tour la production du rapport.

+0

Jeremy, pouvez-vous pointer à un exemple de cela, ou en inclure un dans votre réponse? Merci. –

+0

Ok, voici ce que j'ai fait: J'ai deux paramètres, @SalesRep et @Distributor (les deux sont des chaînes). Maintenant, l'ensemble de données pour le représentant des ventes est juste une requête.Mais l'ensemble de données pour le paramètre de distribution est une requête comme suit: SELECT [numéro de client] AS ID, [Nom du client] AS Nom des distributeurs Où [Représentant des ventes] = @ SalesRep ORDER BY Nom Notez la dépendance sur le paramètre @SalesRep. Dans les paramètres du rapport, assurez-vous que @SalesRep est commandé au-dessus de @Distributor. –

+1

Ouais, vous l'avez. Le paramètre le plus haut doit être l'ensemble de données sans dépendances. Il produit l'ensemble de données pour remplir le deuxième paramètre, et ainsi de suite. –

2

Je ne l'ai pas essayé moi-même, mais j'ai vu un exemple où ils ont configuré les valeurs disponibles à partir d'une requête, puis utilisé une expression pour spécifier la requête. L'expression incluait la valeur du premier paramètre.

+0

Cela ne fonctionne pas. – LWoodyiii

3

Vous créez d'abord un ensemble de données avec une liste d'éléments parmi lesquels l'utilisateur va sélectionner.

Select ID,Agentname from Agents Order by Agentname 

Vous créez ensuite le deuxième ensemble de données;

par ex. Dans votre paramétrage de rapport, vous cliquez sur le paramètre agentid puis sur une requête sur les valeurs disponibles. Vous sélectionnez dataset1 et ID comme valeur et AgentName comme Label.

Votre dernier ensemble de données sera les données réelles. Dans cette Vous créez votre déclaration comme:

Select Quantity, Amount From Orderdetails where [email protected]

En service de reporting, vous allez au paramètre et l'ordre de jeu pour obtenir la valeur de Dataset2

Ainsi l'Ordre du paramètre doit être agentid, orderid. Reporting Service vous invite automatiquement à paramétrer par ordre.

3

Vous aurez probablement besoin de créer une source de données partagées pour les ensembles de données multiples

  1. Conception d'abord le rapport avec la requête et les champs à afficher sans aucun paramètre. De cette façon, vous serez en mesure de définir l'ensemble de données principal du rapport.
  2. mettre à jour la requête de l'ensemble de données en ajoutant le paramètre. utilisez toujours @ avant param_name
  3. dans la vue de présentation du rapport, cliquez avec le bouton droit de la souris et sélectionnez les paramètres dans le menu contextuel.
  4. la liste de paramètres aura automatiquement le nom param sans le signe @.
  5. sélectionner le paramètre dans la liste et mettre à jour les propriétés ...
  6. si vous affichez un aperçu du rapport, il demandera une valeur saisie pour param_name avant de voir le rapport ...

  7. aller maintenant à l'onglet de données, et ajouter un nouvel ensemble de données .... appelez-le dsPopParam

  8. la requête sera utilisée pour remplir le paramètre param_name .... aucun paramètre requis ici.
  9. Répétez les étapes 3 à 5 mais à l'étape 5, mettez à jour le paramètre de propriété dans la section Valeurs disponibles pour qu'il soit à partir de la requête et sélectionnez l'ensemble de données dsPopParam. Les champs Value et Label seront les champs renvoyés par la requête de dsPopParam.
  10. sélectionnez l'onglet Affichage à nouveau et notez cette fois-ci la liste déroulante de liste contenant la liste des paramètres ....

Note importante: dans le cas où le rapport n'a pas rendu ou exception a été levée, juste basculez à nouveau vers l'onglet données, sélectionnez le dataset du rapport et exécutez la requête, vous serez invité à entrer une valeur pour param_name ... entrez-le et exécutez-le ... puis passez à l'onglet preview et

Questions connexes