2009-10-27 2 views
0

J'essaie de convertir l'un de nos rapports les plus simples à Reporting Services.Sélection de paramètre pour la mise à jour

Le rapport Excel original appelle plusieurs procédures stockées en utilisant les résultats de l'un pour structurer le suivant lorsqu'il parcourt les données.

J'ai actuellement 2 ensembles de données appelant les procédures stockées.

Le premier est appelé GetGlobalCustomers. Cela remplit un ensemble de résultats qui renvoie les informations de connexion pour chaque base de données (nous avons divisé notre base de données par client) et renvoie les champs ID, Name, Customer et Server.

La seconde est appelée GetSchedules qui a besoin du serveur et du nom fournis par GetGlobalCustomers pour interroger la base de données correcte.

Cependant je veux seulement sélectionner le client par son nom, pas le serveur individuel/nom (qui remémoration client est sur quel serveur et ce que leur nom de base de données est presque impossible).

J'ai donc un paramètre appelé CustomerName, poussé en haut de la liste des paramètres qui présente à l'utilisateur le client à sélectionner en premier avec la valeur ID. J'ai aussi deux paramètres appelés DBServer et DBName. Comment définir DBServer et DBName pour être dépendant du client sélectionné? Il ne semble pas y avoir de moyen facilement apparent.

Je suppose qu'il doit faire partie des valeurs disponibles et spécifier des valeurs, mais je ne peux pas comprendre comment dire "Pour ce client ID utiliser cette base de données/nom". Je pense que je pourrais en créant deux ensembles de données supplémentaires qui effectuent une sélection par des requêtes d'identification pour dbserver/dbname, mais si je dois le faire chaque fois que je veux choisir le paramètre que je vais avoir des dizaines de jeux de données.

Répondre

0

Vous pouvez le faire si votre source de données avec une mise en garde: vous ne pouvez pas utiliser des sources de données partagées.

La chaîne de connexion de source de données peut contenir des paramètres dans ce cas. Par exemple:

= "Data Source =" + Paramètres P_Environment.Value + "Initial Catalog = MyDB;"

Vous avez raison de dire qu'il doit faire partie des valeurs disponibles. Une possibilité consiste à faire référence par le client à la chaîne de connexion complète qui serait transmise à la source de données. Donc, dans ce cas, vous avez un paramètre qui présente le nom du client comme le texte du paramètre et la chaîne de connexion comme valeur.

+0

Je pense que vous m'avez mal compris (ou je ne me suis pas bien expliqué). J'ai une base de données qui contient l'information globale. Cela a une liste de toutes les bases de données et de leurs emplacements. Ceci est accessible via GetGlobalCustomers pour récupérer le serveur/nom à utiliser dans les requêtes suivantes. Autant que je sache, je n'ai pas besoin de changer de source de données car la procédure de stockage utilise les paramètres pour localiser la base de données correcte. Actuellement, je passe l'ID de la base de données et en utilisant un select de la table maître pour la paire nom/serveur qui est horriblement inefficace. –

Questions connexes