Relatório com linhas “zebradas” no SSRS 2008 R2

Fala galera, quem nunca precisou fazer um relatório simples, mostrando apenas algumas informações em forma de lista? Isso é mais comum do que se imagina, vários cliente que eu passo utilizam esta forma de relatório para mostrar as informações necessárias. Enfim, vou mostrar um exemplo de como fazer um desses relatórios em formato de matriz (linha e coluna), e como “zebrar” o resultado (deixar uma linha de cada cor).

Como nos ultimos posts, vou partir da idéia que você já sabe criar o Shared Data Source e o Shared Dataset. Mas caso não saiba fazer isso, leia esse artigo: Shared Data Source e Shared Dataset no Reporting Services 2008 R2

Para fazer o exemplo, crio uma procedure no banco AdventureWorks que me retorna todos os funcionários da empresa. Veja o código abaixo:

 

   1:  CREATE PROC RetornarEmpregados
   2:  AS
   3:  SELECT D.Name [Depto]
   4:       , C.FirstName + ' ' + C.LastName [Nome]
   5:       , C.EmailAddress [eMail]
   6:       , CONVERT(DATE,HD.StartDate) [DataInicio]
   7:  FROM Person.Contact C
   8:    RIGHT JOIN HumanResources.Employee E
   9:      ON E.ContactID = C.ContactID   
  10:    LEFT JOIN HumanResources.EmployeeDepartmentHistory HD
  11:      ON E.EmployeeID = HD.EmployeeID   
  12:    INNER JOIN HumanResources.Department D
  13:      ON D.DepartmentID = HD.DepartmentID
  14:  WHERE HD.EndDate IS NULL
  15:  ORDER BY D.Name, C.FirstName + ' ' + C.LastName

O resultado dessa procedure, é um rowset de 290 linhas.

image

Pronto, agora é criar um relatório que vai utilizar essa PROC. Vamos colocar a mão na massa.

Depois de criar o Data Source, o Dataset e o relatório em branco, vamos selecionar o item Table na toolbox e trazer para dentro do relatório.

image

Como já de costume, aparece o wizard para você informar qual é o Dataset que será utilizado para popular as informações deste relatório. Selecione o que você criou e clique em Ok.

Onde você arrastou a Table, vai aparecer o controle vazio, como esse abaixo:

image

Pare o mouse sobre uma das colunas e dê um clique. Uma lista suspensa será mostrada, no qual você pode escolher qual item do Dataset você quer colocar naquela coluna.

image

Faça isso para todas as colunas que você deseja inserir no relatório.

É possível alterar o nome da coluna, para isso, clique sobre o ítem que está na linha escrita Header (Cabeçalho) e informe o texto que desejar. Vejam como deixei a minha Table:

image

Para visualizar seus dados retornados, clique no botão Preview logo em cima do relatório.

image

Reparem que o relatório está sem formatação. Todas as informações estão chapadas em branco e preto.

Vamos fazer algumas modificações para deixar o relatório mais atrativo para nosso olhos.

Primeira coisa é alterar o fundo do cabeçalho, para isso, vá até a Table e clique na coluna da esquerdo da linha do Header.

image

Após ela ficar selecionada, vá até o item de Background Color e selecione a de sua preferencia.

image

Outra coisa que você pode fazer, é alterar o tamanho das colunas. Para isso, clique na Table e vá até a linha divisória das colunas na primeira linha.

image

Bom, depois de formatar da forma que é melhor para seu relatório, vamos criar o efeito “zebra” no resultado.

Seguindo a mesma logica de colorir o cabeçalho, vamos selecionar a linha que queremos colorir, e vamos até o item Background Color.

image

image

Lembrem-se que, ao invez de escolher a cor propriamente dita, nós queremos fazer linha sim e linha não colorida. Para isso, vamos usar uma expressão para nos ajudar.

No botão [fx] da caixa de seleção de cores, podemos inserir uma formula. É isso que vamos fazer.

image

Eu coloquei essa formula: =iif(RowNumber(Nothing) mod 2,"White","LemonChiffon")

Informando que a primeira linha do relatório é branca (White), e a segunda é um amarelo claro (LemonChiffon). Você pode selecionar outras cores a sua escolha.

Veja como ficou meu relatório:

image

Vocês viram que é uma formula simples para zebrar o relatório. Agora fiz uma outra formula simples para mudar a cor do texto em algumas linhas. A regra é, o Departamento que tem o nome de “Document Control” deve ter o texto em vermelho.

image

A formula colocada na cor do texto é essa:

=IIF( Fields!Depto.Value = "Document Control","Red","Black")

Divirtam-se com o Reporting Services e suas possibilidades Alegre

Sobre Diego Nogare 350 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.