Usuário com melhor resposta
ReportViewer - agrupamentos personalizaveis

Pergunta
-
Boa tarde, pessoal
Tenho um relatório (Report Viewer) onde os dados estão agrupados (Group) por data de vencimento.
No entanto, preciso oferecer ao usuário outras opções de agrupamento (por categoria, por cliente, etc..). Existe uma forma de trabalhar com os agrupamentos em tempo de execução ou sou obrigado a criar um .rdlc diferente para cada opcao de agrupamento ?
Qualquer dica qto a melhor forma de fazer, fico grato.
Estou usando o VS 2005.
[]s
Robson Castilho - Desenvolvedor C# - MCTS .Net 2.0 Windows Applications
Respostas
-
Robson,
O agrupamento é feito sobre uma expressão, portanto é completamente flexível. Você pode mudar a expressão de agrupamento baseada em um parametro, por exemplo, digamos que voce tenha um campo Cidade e outro Estado, normalmente o agrupamento de cidade seria =Fields!Cidade.Value e estado =Fields!Estado.Value. Fields é uma collection que pode ser acessada pelo nome, portando você pode criar um parametro que indica em qual campo sera o agrupamento e usar:
=Fields(Parameters!agrupamento.Value).Value, assim o agrupamento poderia ser por cidade ou estado.
Espero ter respondido.
Att
Boreki
http://www.boreki.eng.br- Sugerido como Resposta Boreki [MSFT]Microsoft employee sexta-feira, 1 de maio de 2009 21:42
- Marcado como Resposta Robson Castilho ® segunda-feira, 4 de maio de 2009 23:31
-
Robson,Caso voce use visibilidade, o grupo pai, se for oculto, nao mostrara os grupos filhos. Uma maneira simples de resolver seria usar um grupo "falso" quando o usuario nao selecionar o grupo pai. Por exemplo, digamos que o parametro para grupo pai aceita NULL ou o valor para agrupar categoria, entao voce pode usar a expressao:=iif(isnothing(Parameters!grupo.value), "" , Fields(parameters!grupo.value))Assim, quando o parametro eh nulo, ele usara a mesma expressao para todos os campos.aTTBOREKI
http://www.boreki.eng.br- Marcado como Resposta Robson Castilho ® segunda-feira, 4 de maio de 2009 23:31
Todas as Respostas
-
Robson,
O agrupamento é feito sobre uma expressão, portanto é completamente flexível. Você pode mudar a expressão de agrupamento baseada em um parametro, por exemplo, digamos que voce tenha um campo Cidade e outro Estado, normalmente o agrupamento de cidade seria =Fields!Cidade.Value e estado =Fields!Estado.Value. Fields é uma collection que pode ser acessada pelo nome, portando você pode criar um parametro que indica em qual campo sera o agrupamento e usar:
=Fields(Parameters!agrupamento.Value).Value, assim o agrupamento poderia ser por cidade ou estado.
Espero ter respondido.
Att
Boreki
http://www.boreki.eng.br- Sugerido como Resposta Boreki [MSFT]Microsoft employee sexta-feira, 1 de maio de 2009 21:42
- Marcado como Resposta Robson Castilho ® segunda-feira, 4 de maio de 2009 23:31
-
Boreki,
Entendi, porém há 2 problemas.
No meu agrupamento (hoje por data de vencimento), eu coloco a data do vencimento:
10/01/2009
xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxxxxxxxxx
10/02/2009
yyyyyyyyyyyyyyyyyyyyyyy
yyyyyyyyyyyyyyyyyyyyyyy
Ou seja, caso o usuário escolha agrupar por categoria, eu preciso, além de agrupar, exibir o nome da categoria ao invés da data.
Além disso, o segundo problema é que, ao agrupar por categoria, um outro agrupamento deve ser feito pela data do vencimento (dentro do grupo de categorias), dessa forma:
PAPELARIA
10/01/2009
xxxxxxxxxxxxxxx
xxxxxxxxxxxxxxxx
10/02/2009
yyyyyyyyyyyyyyyy
ENERGIA
01/03/2009
xxxxxxxxxxxxxxxx
01/04/2009
xxxxxxxxxxxxxxxx
Resumindo:
Caso escolha agrupar por data vencimento, somente 1 agrupamento.
Caso escolha agrupar por categoria, deverá haver 2 agrupamentos (categoria + dt.vencimento)
E ainda preciso exibir a data (ou a categoria) para cada grupo (em negrito nos esquemas acima)
Vou começar a mexer agora aqui (e posto aqui caso consiga fazer tudo no mesmo rdlc)
Qualquer sugestão será bem-vinda.
Obrigado.
Robson Castilho - Desenvolvedor C# - MCTS .Net 2.0 Windows Applications -
Olá Boreki
Ignore o "problema" numero 1, ok. Pelo que voce passou ja é possivel fazer (exibir o nome da categoria).
Qto ao segundo problema, fiz o relatório com os 2 agrupamentos. O segundo (interno) é o por data vencimento e SEMPRE existirá.
A questão é qto ao agrupamento externo, que só existirá caso o usuario escolha agrupar por categoria, caso contrario não precisarei dele. Existe uma forma de desabilitá-lo em tempo de execução? Nas propriedades do grupo existe a aba "Visibility", mas nao creio que seja para isso (até tentei mas nao funcionou).
Como fazer?
[]s
Robson Castilho - Desenvolvedor C# - MCTS .Net 2.0 Windows Applications -
Robson,Caso voce use visibilidade, o grupo pai, se for oculto, nao mostrara os grupos filhos. Uma maneira simples de resolver seria usar um grupo "falso" quando o usuario nao selecionar o grupo pai. Por exemplo, digamos que o parametro para grupo pai aceita NULL ou o valor para agrupar categoria, entao voce pode usar a expressao:=iif(isnothing(Parameters!grupo.value), "" , Fields(parameters!grupo.value))Assim, quando o parametro eh nulo, ele usara a mesma expressao para todos os campos.aTTBOREKI
http://www.boreki.eng.br- Marcado como Resposta Robson Castilho ® segunda-feira, 4 de maio de 2009 23:31
-
Grande Boreki
Deu certinho.
Só um detalhe é que não consegui usar o isnothing (nem Parameters!CampoAgrupamento.Value=""). O report entrava em loop infinito!
Então, fiz da seguinte forma:
=Iif(Parameters!CampoAgrupamento.Value="DtVencimento", "", Fields(Parameters!CampoAgrupamento.Value).Value)
Ou seja, forcei um valor default "DtVencimento" para quando não for utilizar o primeiro agrupamento.
Muito obrigado!
[]s
Robson Castilho - Desenvolvedor C# - MCTS .Net 2.0 Windows Applications -
E como seria a expressão para agrupar? Tenho um dataset carregado com as informações, possui linhas duplicadas com diferença de um campo. Gostaria de agrupar por esse campo. Na troca de msg não fala como fazer esse agrupamento via expressão.
Renato Mattos -
Parceiro, boa tarde.
Estou fazendo algo semelhante, porém não está dando certo...
Montei uma tela "Filtro", onde o usuário define como ele quer o relatório...
Cliente De Até
Nome
Fantasia
Estado
Tipo de Agrupamento
Ordem do Agrupamento
Cheguei a criar um parâmetro de expressão, conforme falaram... mas não deu certo
Porém nesta opção de passar o tipo de agrupamento para o reportview, não está dando certo... Poderiam dar um auxilio ou me passar o exemplo de como poderia estar fazendo isto?
Agradeço desde já