2009-10-27 5 views
0

SQL Reporting 2008 ne me permet pas de placer les variables PageNumber et TotalPages (global) sur le niveau de données; ne les autorise que dans l'en-tête de page & footer. Mais leurs valeurs vont de pair avec les données. Alors, y a-t-il un moyen de connaître le numéro de la page sur un niveau sans en-tête?SQL Reporting - Mettre le nombre de pages sur un niveau sans en-tête

+0

Je n'ai pas SSRS2008 - et 2005 ne l'a pas - mais pouvez-vous coder l'événement Prerender de la section de détail? Avez-vous accès à la valeur de la page ici? – Bill

Répondre

1

Page et TotalPages et même RecordCount est un concept relatif pour une base de données. La page sur laquelle une ligne est activée dépend de l'ordre de tri, de la synchronisation (quelqu'un pourrait insérer des données, et donc de tous les enregistrements sur une ou plusieurs lignes) et de la modification (soemone peut mettre à jour un champ de votre clé de tri).

Donc je ne dirais pas que les valeurs "PageNumber" et "TotalPages" sont associées aux données, elles sont associées à la requête.

La mise en page des données est triviale et déterministe uniquement si votre requête peut prendre une sorte de snaphot basé sur votre clé. Lorsque cet instantané n'est pas possible, car il est trop cher à calculer ou trop volumineux pour tenir dans la mémoire, la signification de "PageNumber" associé à un élément commence à être floue.


Je pense que c'est la raison pour laquelle des rapports de services prend l'approche qu'il fait, apparemment ligne par ligne, jusqu'à ce que la page est pleine, puis mettez à jour les en-têtes ..

+0

Donc vous dites que je devrais retourner le nombre de pages et le numéro de page dans la requête, en utilisant les maths? C'est faisable dans Crystal Reports; CR ne fait pas la distinction entre la ligne d'en-tête et les données comme le fait SQL. – JonathanWolfson

+0

Ce que je dis, c'est qu'il n'est jamais précis et il y a plusieurs approximations comment le faire, selon le moteur de DB et l'outil de reporting. Désolé ... pas de balle d'argent. – lexu

0

L'inverse est vrai ; C'est-à-dire qu'un en-tête de rapport peut aspirer des valeurs à partir de données même si ce n'est pas le contraire. Ainsi, j'ajoute un en-tête de page qui extrait simplement les valeurs des cellules de données cachées. La partie de pagination fonctionne normalement, en utilisant Globals.PageNumber et .TotalPages, et la partie dynamique dépendant des données de la même ligne d'en-tête du numéro de page est =ReportItems!DynamicTitle.Value.

Questions connexes