2009-02-10 12 views
0

J'ai un rapport qui exécute un proc stocké:En SSRS 2005, doit déclarer la variable scalaire

EXEC ra_spProjectCalendar @Month, @Year, @ProjectID 

ProjectID est un menu déroulant de sélection multiple. Lorsqu'un seul projet est sélectionné, cela fonctionne 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.

Répondre

2

j'ai eu quelque chose de semblable 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, ",") & "'" 

code dans la SP cible divise la chaîne multi-sélection 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 - c'était juste au début de notre passage à SSRS et les choses ont bougé un peu depuis - mais c'est peut-être le problème que vous décrivez.

2

J'ai eu la même erreur se produire: Doit déclarer la variable scalaire.

Je réalise maintenant que la première chose à vérifier est que lorsque vous entrez la requête en tant que texte, ou proc en tant que type proc stocké, ssrs crée automatiquement l'entrée de paramètre dans l'onglet paramètres des propriétés de l'ensemble de données. S'il ne les crée pas, il ne peut pas lire correctement votre requête.

Dans mon cas, j'utilisais OPENQUERY pour appeler un cube de services d'analyse et référencer les noms de champs qui contiennent beaucoup de crochets. Malheureusement, SSRS adore reformater votre code pour que "[Measures]. [SomeMeasure]" se transforme en ce monstre d'échappement moche [[Measures]]. [Somemeasure]]]

Si vous modifiez cette requête dans un autre outil puis recopiez-le à nouveau à ssrs, puis ssrs ne peut pas lire cette syntaxe! Même si ça le génère! Donc, enlevez tous les crochets supplémentaires et remplacez les guillemets doubles et le boom il fonctionne à nouveau et génère vos paramètres.

+0

La suppression de crochets supplémentaires du SQL dans BIDS Query Designer était la clé pour moi. Je vous remercie! – leqid

Questions connexes