Question

J'ai un rapport qui exécute un proc stocké:

EXEC ra_spProjectCalendar @Month, @Year, @ProjectID

ProjectID est une liste déroulante de sélection multiple. Quand un seul projet est sélectionné, il fonctionne très bien. Si je sélectionne plusieurs projets, je reçois l'erreur:

"Must declare scalar variable "@ProjectID"

Il fonctionne très bien quand je le lance à partir de l'onglet Données, cependant, quand je l'ai mis en mode Aperçu j'ai des problèmes.

Était-ce utile?

La solution

Je suis quelque chose de similaire au travail en construisant la requête comme une expression - dans votre exemple

="EXEC ra_spProjectCalendar @Month = '" & Parameters!Month.Value & "',@Year='" & Parameters!Year.Value & "',@ProjectID = '" &  Join(Parameters!ProjectID.Value, ",") & "'"

Certains code dans la SP cible divise la chaîne de caractères de sélection multiple dans une table temporaire qui est utilisé dans les jointures pour créer une sortie.

Je ne me souviens pas pourquoi nous avons fini par le faire de cette façon - il était juste au début de notre passage à SSRS et les choses ont évolué depuis un peu - mais il peut avoir été le problème que vous décrivez

Autres conseils

J'avais lieu la même erreur: doit déclarer la variable scalaire

.

Je me rends compte maintenant la première chose à vérifier est que lorsque vous entrez dans la requête sous forme de texte, ou la procédure stockée comme un type de procédure stockée, qui SSRS crée automatiquement l'entrée de paramter dans l'onglet Paramètres des propriétés du jeu de données. Si elle ne les crée pas, il ne peut pas lire votre requête correctement.

Dans mon cas, j'utilisais OPENQUERY pour appeler un cube de services d'analyse et de référencement les noms des champs qui contiennent beaucoup de crochets. Malheureusement, SSRS aime reformater votre code afin que bien formated « [mesures]. [SomeMeasure] » se transforme en ce gâchis laid de caractère d'échappement [[Mesures]]. [Somemeasure]]]

Si vous modifiez cette requête dans un autre outil puis re-copier revenir à SSRS, alors SSRS ne peut pas lire cette syntaxe! Même si elle le génère! Donc supprimer tous les crochets supplémentaires et remplacer les guillemets doubles et un barrage flottant fonctionne à nouveau et génère vos paramètres.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top