2 votes

Utiliser un paramètre dans SSRS pour le nom de table_name

J'ai parcouru l'internet à la recherche d'options et la seule que j'ai trouvée qui puisse le faire est l'utilisation d'un $Proc, mais j'essaie d'éviter cela.

Je pense qu'il serait assez simple d'utiliser un paramètre pour sélectionner un tableau différent en fonction de ce que l'utilisateur choisit dans une liste déroulante.

C'est ici : - Il y a deux tables que le rapport doit utiliser, * some_table_CY (table de l'année en cours) * Some_table_STLY (table de l'année dernière à la même époque).

J'ai donc créé un paramètre qui donne à l'utilisateur la possibilité de sélectionner "Current_Year" ou "Last_Year", en fonction de ce que l'utilisateur choisit, le paramètre sera alors utilisé dans l'instruction select, quelque chose comme ceci : "SELECT * FROM :pReportVersion"

Cependant, cela ne fonctionne pas. J'ai besoin qu'elle fasse cela, sans utiliser d'union, car l'union de ces deux tables entraîne d'ÉNORMES problèmes de performances et la requête prend plus de 4 heures à exécuter, ce qui n'est pas acceptable pour un rapport dont les utilisateurs ont besoin sur demande.

(Ceci est une requête à l'oracle)

1voto

Hannover Fist Points 5172

Utilisez l'expression Dataset et définissez-la comme suit :

\="SELECT * FROM " & Parameters!ReportVersion.Value

enter image description here

Pour les requêtes plus longues, vous devrez peut-être entourer chaque ligne de guillemets, ajouter une esperluette et un saut de ligne :

="SELECT * " & VBCLRLF & 
 "FROM " & Parameters!ReportVersion.Value & VBCRLF &
 "WHERE FIELD1 > 10 " & VBCRLF & 
 "AND FIELD2 = 'YES' "

0voto

Harry Points 1164

Vous pouvez toujours utiliser l'union..

Disons que vous avez un paramètre appelé @year

définir les valeurs disponibles comme suit (préciser les valeurs)

année en cours pour l'étiquette et 1 pour la valeur

l'année dernière pour l'étiquette et 2 pour la valeur

Alors votre jeu de données peut être quelque chose comme ceci :

select * from some_table_CY 
where @year = 1

union all

select * from some_table_LY 
where @year = 2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X