J'ai un projet de services de reporting Sql Server. J'ai une requête de dataset appelée Total où je sélectionne certaines données basées sur un paramètre:
select ... from ... group by ... having prop_id = @PropID
Maintenant, pour remplir une list de plusieurs valeurs pour ce paramètre, j'ai une requête de jeu de données appelée AllProps qui sélectionne tous les prop_id possibles:
select prop_id from proposal order by prop_id
Maintenant, dans le volet de données du rapport, je sélectionne les propriétés du paramètre à partir de @PropID et remplis les formulaires comme suit:
Under General I have, Name: PropID Data type: Text (I select "Allow multiple values") Under Available values I have, Get values from a query Dataset: AllProps Value Fields: prop_id label field: prop_id Under Default Values I have, Get values from a query Dataset: AllProps Valuefield: prop_id
Lorsque je clique sur l'onglet d'aperçu pour voir mon rapport, j'obtiens l'erreur suivante:
Une erreur s'est produite lors du traitement du rapport local. Une erreur s'est produite lors du traitement du rapport. L'exécution de la requête a échoué pour l'set de données "Total".
DOIT DÉCLARER LA VARIABLE SCALAIRE '@PropID'.
Où est-ce que je me suis trompé? Quelle est la variable scalaire dans SSRS et comment est-elle correctement utilisée?
Merci
La requête que vous avez écrite doit être corrigée. Puisque vous avez sélectionné plusieurs valeurs, vous devez utiliser in
clause.
Select col1,col2.... from TableName where prop_id in (@PropID)
Dans la procédure stockée, vous pouvez passer directement le paramètre et split les valeurs à l'aide d'une fonction dans la procédure stockée.
Si le paramètre est directement transmis à une requête SQL à la place de la procédure stockée, concaténez les valeurs des parameters à l'aide d'une jointure et passez à l'set de données. Entrez la description de l'image ici