2016-03-01 1 views
0

Je travaille sur un rapport de création de rapports Microsoft SQL Server et je rencontre un problème que je n'arrive pas à résoudre.Rapport MS SQL Server Report Builder où clause parameter

Mon rapport est une liste de classes de collège. Je dois pouvoir afficher soit tous les cours, soit seulement les cours de formation générale.

Il existe un attribut de cours pouvant être associé à un cours. Tous les cours d'éducation générale ont un attribut de cours composé de # suivi de 3 lettres.

La solution semble être assez simple en créant un paramètre qui passerait soit #% ou% dans la clause WHERE de ma requête comme ceci:

  • OÙ factClassAttributes.CourseAttribute LIKE '% #' (Gen cours ed)
  • OÙ factClassAttributes.CourseAttribute LIKE « % » (tous les cours)

ce que je ne compte pas est que certains cours ne sont pas un attribut de cours et en utilisant% ne comprennent pas les documents avec une valeur nulle valeur pour l'attribut de cours.

J'ai alors pensé que j'essaierais de mettre en place un paramètre contenant la clause WHERE comme une valeur et null comme l'autre valeur. Cela génère un message d'erreur générique "rsErrorExecutingCommand".

Est-ce que quelqu'un a des suggestions sur la façon d'accomplir cela autre que de créer un rapport identique sans la clause WHERE?

Merci

Répondre

1

Soit utiliser un paramètre optionnel:

WHERE ((@param1 IS NULL) OR (factClassAttributes.CourseAttribute LIKE @param1 +'%')) 

Ou remplacer dynamiquement les valeurs nulles:

WHERE ISNULL(factClassAttributes.CourseAttribute,'%') LIKE '#%' 
+0

Cela ne me prenez pas ce que je dois et qui est probablement parce que ma question et le contexte de la question n'étaient pas clairs. Ce que je dois vraiment savoir est s'il est possible de passer la clause WHERE entière en tant que paramètre dans le Générateur de rapports SQL Server ou s'il existe un moyen d'écrire la clause LIKE pour renvoyer des enregistrements null et non null. –