2009-01-30 5 views
4

Est-il possible de déterminer le nombre de colonnes affichées dans un rapport Reporting Services et de l'utiliser dans l'expression Visibilité d'une zone de texte distincte?Reporting Services - Détermination du nombre de colonnes affichées dans la matrice

je fais face le scénario suivant:

Mon client a un rapport Reporting Services 2005, contenant une matrice, qui affiche un nombre variable de colonnes, en fonction des paramètres sélectionnés. À l'occasion, certains utilisateurs ont généré des rapports avec un très grand nombre de colonnes. Cela provoque une erreur de serveur lorsqu'ils tentent ensuite d'exporter vers Excel, car le format Excel 97-2003 est limité à 256 colonnes. Je souhaite donc afficher un message en haut des rapports lorsque plus de 256 colonnes sont affichées dans la matrice, en informant les utilisateurs de cette limitation et en suggérant la solution de contournement de l'exportation au format CSV (et en affichant dans Excel 2007 s'ils ont il).

Répondre

4

Seriez-vous en mesure de compter le jeu de données pour obtenir le nombre de colonnes?

Count(Fields!FieldUsedAsColumnGrouping.Value,"DatasetName") 

Je ne sais pas comment vos données et de la matrice sont configurés, je fais quelque chose de similaire où je dois connaître le nombre de colonnes afin que je puisse tracer une ligne de frontière appropriée. Mais je pense que vous devriez pouvoir compter sur le jeu de données ou sur le regroupement pour obtenir ce que vous cherchez. (Je peux coller du code le lundi si nécessaire.)

+0

Dustin - cela a aidé, mais il m'a donné le nombre total de cellules (c'est-à-dire multiplié par des lignes). Je vais essayer de diviser par la fonction RowNumber() ... –

+0

Intéressant ... RowNumber ("DatasetName") me donne également le nombre total de cellules ... –

+0

Dustin - avec un simple changement que j'ai réussi à Obtenez votre code pour répondre à la question que je voulais. J'ai juste besoin d'un CountDistinct au lieu de Count. Merci pour l'aide, profitez de votre générosité :-) –

1

Cela peut être fait, je viens de créer un test pour prouver ma théorie; voici les bases.

J'ai créé une colonne calculée sur mon ensemble de données avec une valeur simple de 1. J'ai ajouté cette colonne au groupe de colonnes de grain le plus bas dans la matrice (le plus bas dans la hiérarchie). J'ai ensuite ajouté une autre colonne dans la matrice et exécuté un RunningValue sur la colonne avec ma colonne calculée de l'ensemble de données. RunningValue peut prendre un paramètre Scope et la portée dans ce cas est le nom du regroupement de niveau inférieur dans la hiérarchie. Cela me donne une valeur égale au nombre de colonnes dans la matrice.

Il y a peut-être une meilleure façon de le faire et je vais l'examiner pour vous mais c'était la première idée qui a surgi dans ma tête.

1

Un travail autour de ce (grand nombre de colonnes) consiste à "envelopper" la matrice après tant de colonnes. Vous pouvez le faire en plaçant la matrice dans une table ou une autre matrice avec la table/matrice externe contrôlant l'encapsulation en vérifiant un "pointeur" ou un numéro de regroupement dans la source de données. Pour que cela fonctionne, vous aurez également besoin d'incrémenter ce pointeur qui contrôle le groupement chaque n nombre de lignes où n est le nombre maximum de colonnes que vous voulez voir apparaître dans le rapport matriciel.

Exemple de source de données qui se transforme en la matrice: [Groupe pointeur], [Matrice columnn Dimension], [Matrice ligne Dimension], [Mesure/données]

Chaque fois que le [Groupe Pointer] pauses toutes les , disons 20 [Matrix Column Dimensions], la table/matrice externe encapsulera la matrice interne.

Questions connexes