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.
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.
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:
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.
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:
Para visualizar seus dados retornados, clique no botão Preview logo em cima do relatório.
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.
Após ela ficar selecionada, vá até o item de Background Color e selecione a de sua preferencia.
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.
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.
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.
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:
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.
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