[Atenção!!! Este artigo tem sua versão em vídeo! Se quiser pular a parte escrita e só assistir o vídeo, dê uma olhada no final do post!]
Olá pessoal, tudo tranquilo?
No post de hoje vou explicar como fazer agrupamentos simples no Report Viewer que acompanha o Visual Studio 2010. Vou falar sobre isso porque, como vocês sabem, o novo Report Viewer conta agora com componentes novos, mais avançados e sofisticados, como o novo Tablix. E, com a chagada das funcionalidades novas do Tablix, uma das features que teve melhorias foi a questão de agrupamentos. Agora conseguimos fazer agrupamentos de várias formas (Column ou Row Groups, do tipo Parent, Child, Adjacent Right e Adjacent Left).
Entretanto, toda essa sofisticação na questão dos agrupamentos acabou confundindo todo mundo que estava acostumado com o jeito antigo de se fazer agrupamentos (botão direito, add group e pronto). Várias questões no fórum da MSDN tratam essa questão de pessoas perdidas com o agrupamento no Report Viewer do VS 2010.
Portanto, neste artigo / vídeo de hoje, vou mostrar uma das maneiras para que vocês consigam criar o mesmo tipo de grupo que vocês estavam acostumados com as versões anteriores.
Primeiramente, para esse exemplo, vamos utilizar a seguinte estrutura:
Nesse DataSet temos uma lista de Atividades. Essas Atividades foram executadas em alguma data por um certo funcionário. Suponham que tenhamos os seguintes dados nesse DataSet:
Com essas informações, gostaria de montar um relatório agrupado por:
G1) Atividades
G2) Datas
D) Funcionários
Para conseguirmos um relatório com esse layout, no seu projeto no Visual Studio 2010, adicione um novo item do tipo Report. Não se esqueça que essas informações são válidas para aplicações com Target Framework = .NET Framework 4.0.
No relatório que você criou, abra o ToolBox e arraste um componente do tipo Table no corpo do seu relatório. Na janela Report Data, adicione um novo DataSet no seu relatório apontando para o local em que está a fonte de dados que alimentará o seu relatório.
Feito isso, arraste os campos DESCRICAO, DATA e FUNCIONARIO para as colunas da sua Table, de forma que ela fique parecida com a imagem abaixo:
Com isso, temos uma listagem simples dos dados da nossa tabela. Para criarmos os grupos, clique com o botão direito na linha de detalhe e escolha a opção Add Group -> Parent Group…
Na janela que se abre, escolha o campo de agrupamento que, no nosso caso, é o campo DESCRICAO (atividade), já que esse é o primeiro grupo do relatório que estamos querendo fazer. Escolha também a opção para que o Report Viewer crie o Group Header para utilizarmos mais pra frente.
Ao executar essa operação, o Report Viewer cria uma coluna para identificar o agrupamento. Como não precisamos dessa coluna de acordo com o layout que estamos querendo, podemos deletá-la, clicando com o botão direito e escolhendo a opção Delete Columns e Delete Columns Only na caixa de diálogo.
Faça exatamente o mesmo procedimento acima para incluir o segundo grupo, só que agora escolhendo o campo DATA.
Pronto! Com os grupos prontos, basta você customizar a formatação da sua Table para que ela fique parecida com a imagem abaixo (lembrando que o propósito deste artigo não é deixarmos o relatório bonito, mas sim, mostrar como podemos agrupar uma Table de forma simples como você estava acostumado nas versões anteriores):
Para testar o relatório, basta incluir um Form no seu projeto, arrastar da sua ToolBox o componente ReportViewer e escolher o relatório que acabamos de criar. E o resultado vai ser parecido com o que mostramos no início do artigo.
É isso… Conseguiram entender? Se o artigo não foi suficiente, não tem problema! Abaixo segue um vídeo mostrando passo-a-passo como você consegue obter o mesmo resultado. Aí não tem erro! =)
[Observação: para assistir o vídeo em uma qualidade melhor, clique no botão HD do Media Player abaixo]
Por hoje é só. Espero que vocês tenham conseguido entender como podemos fazer o bom e velho agrupamento simples das versões anteriores no Report Viewer do Visual Studio 2010.
Qualquer coisa é só deixar um comentário no post. Até a próxima!
André Alves de Lima.
Show parabéns, simples e rápido!!
Obrigado pelo comentário Henry!
Abraço!
André Alves de Lima.
Boa Noite André……
Muito bom o artigo, esta ajudando muito. Vc sabe me dizer se tem como adicionar 2 dataset e consumir no mesmo relatorio, tipo DS_Cliente(dados cliente) e DS_Produto(vários produtos da compra)???
Obrigado….
Att,
Jonas
Jonas,
Acredito que a forma mais fácil para resolver essa sua necessidade seria criar um DataSet único com todas as informações necessárias para o relatório…
Abraço,
André Lima
Cara, muito bom! Parabens! Como eu faço pra fazer um relatorio com etiquetas em duas colunas? pode me ajudar? Obrigado!
Gil,
Veja se este link te ajuda em algo:
http://www.codingbeaver.com/myblog/index.php/2011/02/03/how-to-use-reportviewer-to-create-addressing-label/
Abraço,
André Lima
Muito interessante. Entretanto, para web, alguns elementos a mais devem ser inseridos:ScripManager e fazer a referencia ao Microsoft. Reporting. Teno um Relatório que envolve duas tabelas que não possuem relacionamentos. Na primeira tenho um campo Flag para identificar que tipo de material compõe o orçamento. Flag pode ser igual a 1,2 ou 3. Tenho que totalizar para cada conjunto de materiais agrupados pelo flag. O mais dificil: para o grupo 1 tenho que multiplicar o somatorio dos subtotais (Qtdade x Preço) por um campo que está na tabela 2.
Estrutura
CodMat Und Qtdade Punit Subtotal
Sum(SubTotal)1
(p/flag 1) LS Valor do campo da tabela 2 =Val
Val x Sum(SubTotal)1
Total ( Val x Sum(SubTotal1) + Sum(SubTotal)1)
(p/flag 2 ou 3) Sum(SubTotal)2ou3
Total Geral = Sum(SubTotal)1 + Sum(SubTotal)2 + Sum(SubTotal)3
Dá pra fazer?
Olá João,
Desculpe não ter respondido essa questão na época em que ela foi feita.. Acabei não vendo o comentário porque esse endereço foi desativado.. O novo endereço é: http://www.andrealveslima.com.br
Caso tenha outras questões, poste por lá!
Abraço,
André Lima
André, o video é muito bom, me ajudou bastante a montar um relatório, porem, estou fazendo um relatório no qual tive que fazer um grupo de colunas. Só que quando adiciono as linhas ele pula uma linha nas colunas pra cada dado.
Sabe como posso resolver?
Existe algum lugar pra que possa postar um print?
Ex:
Frutas Carnes Legumes
1
2
1
2
1
2
3
Como monto uma estrutura para este tipo?
Olá Daniel,
Desculpe não ter respondido essa questão na época em que ela foi feita.. Acabei não vendo o comentário porque esse endereço foi desativado.. O novo endereço é: http://www.andrealveslima.com.br
Caso tenha outras questões, poste por lá!
Abraço,
André Lima
Muito bom MESMO!
Parabêns pelo artigo André, claro, rapido e objetivo.
Valeu pela força Vinicius!
Grande abraço!
André.
Execelente, Parabêns André, procurei muito tempo até achar a solução!
Andre, estou tentando fazer algo bem simples, tenho os dados matricula,nome,serie, grau
quero agrupar por serie e grau, estou tentando primeiro agrupar por série fiz como vc falou acima sendo que queria que ele quebrasse e ele simplesmente não está fazendo isso, e qdo tento deletar as colunas como vc fez ele não me pergunta se desejo deletar a coluna ou o agrupamento ele simplesmente deleta a coluna.
Olá Junior,
Desculpe não ter respondido essa questão na época em que ela foi feita.. Acabei não vendo o comentário porque esse endereço foi desativado.. O novo endereço é: http://www.andrealveslima.com.br
Caso tenha outras questões, poste por lá!
Abraço,
André Lima
Parabéns, vídeo muito bom. Simples e objetivo. Assim como ajudou-me vai ajudar muita gente.
Parabéns pelo tutorial.
Simples , claro e sucinto. Perfeito!!
Obrigado pela ajuda
Parabéns André. Just perfect.
Tem como somar os valores distintos que vem de um DataSet usando o Expression no reportviewer?
EX:
item Valor
A 100
B 200
C 300
D 400
A 100
B 200
C 300
D 400
Soma = 1000 (somando somente os valores cujo item nao repete)
o que eu consigo é:
=FormatCurrency(Sum(Fields!Valor.Value)) Soma = R$ 2.000,00
Olá Matheus,
Sei que já passou MUITO tempo desde que você postou essa questão.. Acabei não respondendo na época porque esse blog foi desativado.. O novo endereço é http://www.andrealveslima.com.br
Quanto à sua dúvida, acredito que este tópico nos fóruns da MSDN americana pode te ajudar:
http://social.msdn.microsoft.com/Forums/sqlserver/en-US/3c2626d8-e835-4bba-b946-7d6796e9c617/sum-distinct
Abraço!
André Lima
Muito bom André, parabéns..
Estou com um probleminha com relação ReportView, talvez possa me ajudar.
Estou criando um relatório, usando como base de dados um arquivo xml.
só que não estou conseguindo totalizar valores de algumas colunas
colunas do tipos de dados decimal e date..
sempre que crio uma expressão, com a função sum, ela me retorna erro.
valeu pelo vídeo André…
Olá Paulo,
Desculpe não ter respondido seu comentário, é que eu não publico mais nesse endereço, mas sim no novo endereço http://www.andrealveslima.com.br … Dê uma olhada lá caso queira conferir novos artigos..
Quanto ao seu problema, você já deve ter resolvido.. Inclusive, seria legal postar qual foi a solução, caso você se lembre.. Dessa forma outras pessoas que passarem por esse mesmo problema podem se beneficiar no futuro..
André Lima
Parabéns André, muito bom, você da aula ? Gostaria de me aprofundar no assunto.
Olá Mauricio,
Obrigado pelo comentário! No momento não estou dando aulas, mas, estou planejando produzir um curso (vídeo-aulas) sobre Report Viewer/Reporting Services. Ainda está no papel, mas, se tudo der certo, pretendo lançá-lo ainda este ano…
Ah, e desculpe ter demorado para responder seu comentário… É que eu não escrevo mais artigos neste endereço… Já faz um tempo que mudei para o endereço http://www.andrealveslima.com.br … Todos os posts deste blog foram migrados para lá, portanto, caso queira conferir novos conteúdos, inscreva-se lá…
André Lima
Olá Andre!
Venho pedir uma ajuda.
Gostaria de saber como eu uso report viewer com mais de um relatorio e como fazer relatorio agrupado com paginas separadas.
Te agradeço desde já.
Olá Leonardo,
Obrigado pelo comentário!
Desculpe pela demora, mas, é que este endereço foi desativado.. Para acessar o site atual, por favor visite http://www.andrealveslima.com.br ..
Quanto à sua dúvida, não consegui entender.. Caso ainda esteja com essa dificuldade, envie um e-mail para contato [arroba] andrealveslima [ponto] com [ponto] br..
Abraço!
André Lima