Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment afficher le numéro de page dans le corps du rapport de SSRS 2008 R2 ?

Vous devez d'abord utiliser des variables de rapport : clic droit sur l'espace vide du rapport -> Variables -> Créer une variable telle que PageCount (mettre la valeur par défaut à 0)

Ensuite, dans votre en-tête ou pied de page -> créez une zone de texte et définissez une expression ->

=Variables!PageCount.SetValue(Variables!PageCount.Value+1)

Il augmentera automatiquement pour chaque page. (IMPORTANT :NE PAS le masquer de l'en-tête ou du pied de page, le SetValue NE FONCTIONNERA PAS si vous masquez la boîte, alors changez la police en 1 ou le texte en blanc, faites ce que vous voulez, juste NE PAS le cacher (il affichera 'True' au fur et à mesure que le réglage a eu lieu))

Ensuite, vous pouvez utiliser :

=Variables!PageCount.Value

à n'importe quelle partie du corps de votre rapport pour accéder au numéro de page.

IMPORTANT :veuillez noter que j'ai essayé d'utiliser Globals ! PageNumber pour définir la variable, mais qu'elle n'était finalement PAS accessible à partir du corps du rapport. Il doit donc s'agir de quelque chose d'accessible à la fois depuis l'en-tête/le pied de page OU le corps.

Dans mon cas, je dois réinitialiser le numéro de page pour chaque instance de mon groupe. Je viens donc de définir un déclencheur à la fin du groupe. (par exemple, je vérifie si j'ai mes retours de valeur totale, car je sais pour chaque fin de mon groupe j'aurai un affichage Total.

En raison de la fonction IIF les deux parties True et False seront traitées, donc si vous mettez des setters dans IIF comme ci-dessous :

=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),Variables!PageCount.SetValue(0))

 ) 

vous finirez par avoir la valeur 0 tout le temps, car le rapport vérifiera la partie vraie puis la partie fausse, les deux setters seront exécutés (la valeur sera définie deux fois)

nous avons donc besoin de 2 cases et quelque chose comme :(Vous devez masquer les cases inutiles de vos conditions de vérification)

=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),"")
)

Vous devez masquer cette case lorsque NOT IsNothing(ReportItems!TotalBox.Value)

=IIF(NOT IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(0),"")
)

Encore une fois, vous devez masquer cette case lorsque IsNothing(ReportItems!TotalBox.Value)

Bien sûr, vous pouvez utiliser un autre moyen pour déterminer la fin d'une instance de groupe, comme :créer une zone de texte qui contient UNIQUEMENT une valeur fixe à la fin de votre table de groupe. et cachez-le. lorsque vous vérifiez le déclencheur, procédez de la même manière que moi.

Cela fonctionne bien pour toutes les versions supérieures à 2008 R2 (inclus).