J'ai un rapport SSRS qui contient 3 ensembles de données alimentant une source de données. Le jeu de données principal est une procédure stockée qui regroupe certaines données sur la base d'un ensemble de paramètres alimenté par les deux autres jeux de données.
La procédure stockée principale qui alimente ce rapport a 4 paramètres. L'un est un ID pour le type de données, deux sont pour les dates de début et de fin et le troisième est juste un paramètre indicateur. Le paramètre indicateur est le paramètre à valeurs multiples dans lequel je souhaite transmettre plusieurs valeurs d'indicateur qui sont également des valeurs VARCHAR.
Dans ma procédure stockée pour mon paramètre @Flag, j'ai le commun:
WHERE [Flag] IN (@Flag)
Ensuite, bien sûr, le paramètre @Flag sur l'ensemble de rapports SSRS pour autoriser les «valeurs multiples» qui sont également remplies à partir d'une requête qui extrait ces valeurs @Flag d'une table de dimension.
Mon problème
Dans la plupart des cas, lorsqu'il s'agit de valeurs INT, l'utilisation de la même technique fonctionne. Cependant, lorsque je traite des valeurs de caractères, cela échoue. Si je choisis un indicateur, le rapport fonctionne comme par magie. Si je sélectionne plusieurs indicateurs, il ne semble pas passer correctement les indicateurs à la procédure stockée et aucun résultat ne revient.
Lors du test de l'indicateur à valeurs multiples directement dans la procédure stockée:
WHERE [Flag] IN ('A', 'B', 'C')
La procédure stockée fonctionne correctement. Le problème n'est donc pas la procédure stockée, mais la façon dont SSRS transmet les valeurs à valeurs multiples au paramètre @Flag.
Solutions essayées
J'ai essayé de faire les ajustements suivants à l'ensemble de données SSRS pour ces paramètres @Flag:
=join(Parameters!<your param name>.Value,",")
ET celui-ci aussi:
=SPLIT(JOIN(Parameters!<your param name>.Value,","),",")
Tout cela fonctionne sur des valeurs uniques, mais jamais sur plusieurs valeurs.
Qu'est-ce que j'oublie ici?
la source
=join(Parameters!<your param name>.Value,",")
) peut être ajoutée à l'ensemble de données lisant le paramètre, sous l'onglet "Paramètres": il y a un bouton "fx" pour ajouter des expressions, à droite de la liste déroulante "Valeur du paramètre" -vers le bas.WHERE <Table>.[<Column>] IN (@MultiValueParm)
, alors le code dans la procédure stockée pourrait êtreWHERE CHARINDEX(<Table>.[<Column>], @MultiValueParmAsText) > 0