Question

Les rapports SSRS prêts à l'emploi ne peuvent pas avoir de données exposées dans l'en-tête de page. Existe-t-il un moyen de faire apparaître ces données?

Était-ce utile?

La solution

Une des choses que je veux dans mes rapports est d’avoir de beaux en-têtes pour mes rapports. J'aime avoir un logo et les paramètres de rapport de l'utilisateur, ainsi que d'autres données à afficher pour donner plus d'informations sur les besoins de l'entreprise que le rapport doit clarifier. L'une des choses que Microsoft SQL Server 2005 Reporting Services ne peut pas faire en mode natif est l'affichage des données d'un jeu de données dans l'en-tête. Cet article explique comment contourner ce problème et à quel point c'est facile.

Créez le projet Report Server dans la section Projets Business Intelligence et appelez-le AdventureWorksLTReports. J'utilise l'exemple de base de données AdventureWorksLT de CodePlex.

texte de remplacement http://www.cloudsocket.com/images/image-thumb.png

Ensuite, affichez l'en-tête de page en cliquant avec le bouton droit de la souris dans la zone Rapport avec le concepteur.

texte de remplacement http://www.cloudsocket.com/images/image-thumb1.png

L’en-tête de page apparaîtra. Si vous souhaitez afficher le pied de page, vous pouvez y accéder à partir du même menu que l'en-tête de page.

texte de remplacement http://www.cloudsocket.com/images/image-thumb2.png

J'ai créé une procédure stockée qui renvoie les données de la commande client à présenter dans l'en-tête de page. Je vais afficher les informations suivantes sur la commande client dans l'en-tête de page:

  • Date de la commande
  • Numéro de commande client
  • société
  • vendeur
  • total dû

Je crée une zone de texte pour chacun de mes champs de données dans l'en-tête de page, ainsi qu'une zone de texte pour l'étiquette correspondante. Ne modifiez pas l'expression dans les zones de texte dans lesquelles vous souhaitez importer les données de la commande client.

texte de remplacement http://www.cloudsocket.com/images/image-thumb3.png

Dans le corps du rapport, placez une zone de texte pour chaque champ de données nécessaire dans l'en-tête de page. Dans la visibilité de chaque zone de texte, sélectionnez True pour masqué. Ce sera l'espace réservé pour les données nécessaires dans l'en-tête de page.

texte de remplacement http://www.cloudsocket.com/images/image-thumb4.png

Votre rapport devrait ressembler à la capture d'écran ci-dessous.

texte de remplacement http://www.cloudsocket.com/images/image-thumb5.png

La dernière étape, et le plus important, consiste à référencer la zone de texte masquée dans les zones de texte situées dans l'en-tête de page. Nous utilisons l'expression suivante pour référencer les zones de texte nécessaires:

= ReportItems! .Value

Votre rapport devrait maintenant ressembler à ce qui suit:

texte de remplacement http://www.cloudsocket.com/images/image-thumb6.png

L'aperçu du rapport doit maintenant contenir les données de l'en-tête de la commande client dans l'en-tête du rapport.

texte de remplacement http://www.cloudsocket.com/images/image-thumb7.png

Autres conseils

Vous devez le faire via les paramètres. Ajoutez un paramètre pour chaque élément de données à afficher, puis définissez-le sur Masqué. Définissez ensuite la valeur par défaut sur "De la requête". et définissez le champ Ensemble de données et valeur sur les valeurs appropriées.

Je pense que la meilleure option consiste à créer un paramètre interne, avec la valeur par défaut le champ du jeu de données que vous souhaitez afficher.

Voici deux solutions de contournement :

  1. Vous pouvez placer le champ lié aux données dans le corps du rapport en tant que zone de texte masquée, puis dans l'en-tête, placez une autre zone de texte avec sa valeur pointée vers celle masquée dans le corps.

  2. Essayez d’utiliser des paramètres de rapport pour stocker les données et d’utiliser ces paramètres pour accéder aux données de l’en-tête.

Cette technique ne fonctionnerait pas si votre rapport couvrait plusieurs pages, utilisez plutôt les paramètres interrogés et définissez la valeur de la zone de texte sur = Parameters! Name.Value selon cet article .

Je suis avec Orion Adrian ici. Les paramètres de rapport sont la voie à suivre.

Je voulais afficher un champ commun à toutes les lignes renvoyées dans l'en-tête. Pour ce scénario, je me suis tourné vers la solution de table liée (en plaçant une table contenant le champ dans le corps et en reliant une zone de texte à l'en-tête). table).

Je l’ai fait parce que si vous utilisez le paramètre solution et qu’aucune donnée n’est renvoyée dans le champ en question, le texte "Paramètre ne contient pas de valeur". est affiché au lieu d'un tableau vide. Je pensais que ce texte dérouterait les utilisateurs (car le paramètre n'est même pas visible).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top