2009-06-17 10 views
7

Je crée un rapport "principal" dans SSRS 2008 qui collabore à d'autres rapports sur une personne. Parfois, tous les autres rapports ne sont pas pertinents et, en tant que tels, ne retournent rien. J'aimerais pouvoir exclure cela du rapport principal pour ne pas laisser une page vierge.Comment supprimer des sous-rapports vides dans SSRS 2008

Je suis conscient de la fonction 'no-rows-message', mais une page entière avec simplement "Non applicable pour cette personne" n'est pas la meilleure solution! Essentiellement, je cherche un moyen de déterminer si un sous-rapport est «vide» et l'utiliser dans une expression de visibilité.

Toute aide est le plus apprécié

Répondre

13

OK, donc j'ai pensé maintenant cela. La réponse est de placer le sous-rapport dans un rectangle. Définissez ensuite la visibilité du rectangle à quelque chose comme ceci:

=IIF(First(Fields![SOMEFEILD].Value, "[SOMEDATASET]") IS NOTHING, TRUE, FALSE) 

[SOMEDATASET] est un ensemble de données peuplé de la même manière que celui peuplant le sous-état. Ensuite, si le sous-état est vide, alors [SOMEDATASET] sera également vide, et plus précisément, le champ [SOMEFEILD] sera égal à NOTHING.

Bada-Bing! Un rapport qui n'est pas encombré de paper-gaspillage de pages vides. Remarque: il y a un mauvais effet secondaire à cette approche, en ce sens que le serveur SQL enverra les mêmes informations deux fois, une fois pour remplir l'ensemble de données du sous-rapport et pour remplir à nouveau le jeu de données dupliqué dans le rapport. Pour moi, c'est acceptable, d'autres peuvent vouloir être conscients de cela.

+0

Bon travail. (tampon pour respecter la limite de 15 caractères) – jgallant

+3

Après avoir réfléchi au problème pendant ma pause déjeuner, j'ai décidé que renvoyer exactement les mêmes données deux fois est * jamais * une bonne idée. Je vais écrire une procédure stockée qui renvoie uniquement le nombre de lignes des procédures stockées utilisées pour remplir les sous-rapports. Ensuite, testez pour voir si ces chiffres sont 0 ou non et définissez la visibilité des sous-rapports appropriés en conséquence. – Brian

+2

merci pour l'idée, j'ai eu besoin de griser une cellule dans le rapport tableau si le sous-rapport ne renvoie rien. Donc, je viens de mettre un sous-rapport dans un rectangle et définir la couleur de fond du rectangle en gris. Je n'ai même pas eu besoin d'utiliser des expressions car SSRS ne renvoie rien par défaut si un sous-rapport ne renvoie rien. Le seul problème que j'ai eu quand j'ai imprimé mon rapport n'a pas montré la cellule grise imprimée ou sur le pdf (mais l'a montré sur l'écran), ainsi j'ai juste placé le texte de lignes de No pour un sous-rapport à CHR (32) . Merci pour l'idée! – mishkin