Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Come visualizzare il numero di pagina nel corpo del report di SSRS 2008 R2?

Per prima cosa devi utilizzare le variabili del rapporto: fare clic con il pulsante destro del mouse sullo spazio vuoto del report -> Variabili -> Crea una variabile come PageCount (imposta il valore predefinito su 0)

Quindi nell'intestazione o nel piè di pagina -> crea una casella di testo e imposta un'espressione ->

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

Aumenterà automaticamente per ogni pagina.(IMPORTANTE:NON nasconderlo dall'intestazione o dal piè di pagina, il SetValue NON funzionerà se nascondi la casella, quindi cambia il carattere in 1 o il testo in bianco, fai qualsiasi cosa, semplicemente NON nasconderlo (verrà stampato 'True' quando l'impostazione è avvenuta))

Quindi puoi usare:

=Variables!PageCount.Value

in qualsiasi parte del corpo del rapporto per accedere al numero di pagina.

IMPORTANTE:NOTA che ho provato a utilizzare Globals!PageNumber per impostare la variabile ma alla fine NON era accessibile dal corpo del report. Quindi, deve essere qualcosa sia accessibile da Header/Footer O Body.

Nel mio caso, devo reimpostare il numero di pagina per ogni istanza del mio gruppo. Quindi ho semplicemente impostato un trigger alla fine del gruppo (ad es. controllo se ho il mio valore totale restituisce, perché so per ogni fine di il mio gruppo avrò una visualizzazione Totale.

A causa della funzione IIF verranno elaborate sia la parte vera che quella falsa, quindi se metti i setter in IIF come di seguito:

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

 ) 

finirai per avere sempre il valore 0, perché il rapporto verificherà la parte vera e poi la parte falsa, verranno eseguiti entrambi i setter (il valore verrà impostato due volte)

quindi abbiamo bisogno di 2 caselle e qualcosa del tipo:(Devi nascondere le caselle non necessarie nelle tue condizioni di controllo)

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

Devi nascondere questa casella quando NOT IsNothing(ReportItems!TotalBox.Value)

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

Ancora una volta devi nascondere questa casella quando IsNothing(ReportItems!TotalBox.Value)

Ovviamente potresti usare un altro modo per determinare la fine di un'istanza di gruppo, come:crea una casella di testo che contiene SOLO un valore fisso alla fine della tabella di gruppo. e nascondilo. quando controlli il trigger, esegui semplicemente l'approccio simile a quello che faccio io.

Funziona bene per tutte le versioni superiori alla 2008 R2 (inclusa).