Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como exibir o número da página no corpo do relatório do SSRS 2008 R2?


Primeiro você precisa usar variáveis ​​de relatório: clique com o botão direito do mouse no espaço vazio do relatório -> Variáveis ​​-> Crie uma variável como PageCount (defina o valor padrão como 0)

Em seguida, no cabeçalho ou rodapé -> crie uma caixa de texto e defina a expressão ->
=Variables!PageCount.SetValue(Variables!PageCount.Value+1)

Ele aumentará automaticamente para cada página.(IMPORTANTE:NÃO esconda isso do cabeçalho ou rodapé, o SetValue NÃO funcionará se você ocultar a caixa, então altere a fonte para 1 ou o texto para branco, faça o que for, apenas NÃO esconda (ele imprimirá 'True' conforme a configuração ocorreu))

Então você pode usar:
=Variables!PageCount.Value

em qualquer parte do corpo do seu relatório para acessar o número da página.

IMPORTANTE:Por favor, OBSERVE que tentei usar Globals!PageNumber para definir a variável, mas acabou não sendo acessível a partir do corpo do relatório. Então, tem que ser algo acessível a partir do Cabeçalho/Rodapé OU Corpo.

No meu caso, tenho que redefinir o número da página por cada instância do meu grupo. Então, apenas defino um gatilho no final do grupo. (por exemplo, verifico se tenho meus retornos de valor total, porque sei que para cada final de meu grupo eu vou ter um display Total.

Por causa da função IIF ambas as partes True e False serão processadas, então se você colocar setters em IIF como abaixo:
=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),Variables!PageCount.SetValue(0))

 ) 

você vai acabar tendo o valor 0 o tempo todo, pois o relatório irá verificar a parte verdadeira e depois a parte falsa, ambos os setters serão executados (o valor será definido duas vezes)

então precisamos de 2 caixas e algo como:(Você tem que ocultar a caixa desnecessária nas suas condições de verificação)
=IIF(IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(Variables!PageCount.Value+1),"")
)

Você precisa ocultar esta caixa quando NOT IsNothing(ReportItems!TotalBox.Value)
=IIF(NOT IsNothing(ReportItems!TotalBox.Value),Variables!PageCount.SetValue(0),"")
)

Novamente, você precisa ocultar esta caixa quando IsNothing(ReportItems!TotalBox.Value)

É claro que você pode usar alguma outra maneira de determinar o final de uma instância de grupo, como:faça uma caixa de texto que contenha APENAS um valor fixo no final de sua tabela de grupos. e escondê-lo. quando você verifica o gatilho, faça a abordagem semelhante à que eu faço.

Funciona bem para todas as versões acima de 2008 R2 (incluídas).