none
Ordenar por subtotal - Matrix & ReportViewer RRS feed

  • Pergunta

  • Bom dia mais uma vez comunidade, 

    Estou tentando criar um relatório onde devo organizar os dados pela coluna SubTotal que é disponibilizada pelo componente Matrix, mas não estou conseguindo, não encontro em nenhum lugar onde posso colocá-lo, quando coloco nas propriedades do matrix -> Groups -> Collums -> Edit -> Sorting, não acho a coluna Total.


    Tente também dar um order by na query do código, porém minha consulta na realidade era um PIVOT SQL, aí passei pro VB.NET um "select *" simples e estou utilizando o Matrix


    Como faço para ordenar pela coluna subtotal? Utilizo VB.NET 2005 e SQL Server 2005 Express
    segunda-feira, 17 de novembro de 2008 13:23

Respostas

  • Paulo,

     

    O interactive Sort permite ao usuario ordenar durante a visualização. Você pode escolher a ordenação inicial nas propriedades do grupo. Edit o grupo junção vá na tab 'Sorting' e use a sua expressão de totalização =Sum(Fields!Valor.Value)

     

    Isso fará com que o grupo venha ordenado pelo total incialmente. Com relação as linhas alternadas em matrix, você não pode usar RowNumber porque ele retornará o numero da linha usada pelo dataset e não a 'linha' da matrix. Para fazer isso em uma matrix você tem que usar uma expressão um pouco mais complicada. Existe um artigo do Chris Hays descrevendo como voc^e pode fazer isso:

    http://blogs.msdn.com/chrishays/archive/2004/08/30/GreenBarMatrix.aspx

     

    Eu coloquei um exemplo no meu site, usando a ordenação pelo total e o efeito de linhas alternadas descrito no link acima.

    http://www.boreki.eng.br/tutoriais/reportviewer/ReportViewerPage.aspx?ReportName=report2.rdlc

     

    Espero que ajude.

     

    Att

    Boreki

     

    quinta-feira, 4 de dezembro de 2008 21:51

Todas as Respostas

  • Bom dia Paulo,

     

    Você não encontrará a coluna 'Total' pois ela não faz parte do seu dataset. Mas para atingir este objetivo você pode colocar no grouping sort em 'current scope' e no Evaluate sort expression e selecionar o seu agrupamento de linhas. Dessa forma ele irá ordenar pela somatória que voce usou no total das colunas. Na sorte expression use a mesma que que voce está usando para mostrar o total.

     

    Att

     

    Boreki

     

    segunda-feira, 17 de novembro de 2008 17:35
  • Opa, bom dia

    Cara, me desculpe pela minha ignorância, mas não entendi o que é pra fazer. Sou novo em mexer com Reports e não entendo muito bem de suas propriedades e etc. Você poderia ser um pouco mais específico? 


    Enquanto isso vou tentando aqui


    Desde já, Obrigado !!!


    Paulo Eduardo Bueno
    terça-feira, 18 de novembro de 2008 12:40
  • Paulo,

     

    É o seguinte, quando você configura a ordenação (interactive sort) você tem a opção de colocar uma expressão para dar essa ordenação. A prática mais comum é colocar um campo (=Fields!Nome.Value o que ordenaria por nome, por exemplo). Mas na verdade você pode colocar qualquer expressão para odenação.

     

    A linha de total da matrix não existe no DataSet, por isso ela não aparece na lista de campos para ordenar, mas o total é uma formula (normalmente algo como =Sum(Fields!Valor.Value)). Então o que você tem que fazer é colocar no sort expression a mesma fórmula que você está usando no total. Na mesma tela onde você configura o sorting, a ultima opção é:

    'Evaluate sort expression in this scope' e o padrão é detail scope. Mude isso e coloque o nome do grupo de linhas da matrix (voce pode ver o nome do grupo clicando no row group / edit group, é o que aparece na primeira text box.

     

    Espero que isso esclareca,

     

    Att

    Boreki

    quarta-feira, 19 de novembro de 2008 17:32
  • Opa Boreki, desculpe pela demora, mas estive afastado esses últimos dias.


    Então cara, eu ainda não vi, vou procurar ver hoje. É que por incrível que pareça, eu não sei o porque (Vou postar na parte de VS) o meu projeto não está mudando o form inicial !! Eu não sei o que está acontecendo, mas eu mudo o Startup From e mesmo assim nada !  Já exclui o form que ele está iniciando do projeto, ele acusa um erro de que o form não está no projeto porém mesmo assim está iniciando o relatório, não faço a mínima idéia do que esteja acontecendo. Vou arrumar isso e te postar o feedback da sua ajuda!




    Desde já, obrigado! 


    Paulo Eduardo Bueno
    segunda-feira, 24 de novembro de 2008 10:59
  • Bom dia,

    Conforme dito, consegui arrumar aqui e testei, infelizmente não deu certo....

    Bom, vou tentar explicar também de forma mais clara o meu Matrix
    esses são os campos e como os dados aparecem na tela:

    http://img114.imageshack.us/img114/4419/rpt2kg8.jpg


    Quando clico com o botão direito na Coluna do Total e no Edit Group dela, na primeira TextBox eu tenho matrix1_data

    Pelo que eu entendi que é pra fazer Boreki, seria ir nas propriedades do Total -> Interactive Sort, no Sort Expression, colocar a expressão de formatação da Data (Afinal, é ela que é minha coluna que gera os dados) e adicionar o Evaluate Sort igual ao Group dela, que é o matrix1_data 

    Esse foi meu retorno




    tentei usar também o que está no Total, mas é o mesmo, matrix1_data

    será que teria outra sugestão? 


    Desde já, obrigado !


    Paulo Eduardo Bueno
    quarta-feira, 26 de novembro de 2008 11:21
  • Nenhuma sugestão?



    Desde já,
    Obrigado


    Paulo Eduardo Bueno
    terça-feira, 2 de dezembro de 2008 15:58
  •  

    Seu sort Expression deve ser =Sum(Fields!Ocampoque vc soma no total.Value)

     

    O group scope deve ser o grupo que voce esta usando na 'juncao'.

     

    Att

    Boreki

    quarta-feira, 3 de dezembro de 2008 20:12
  • Bom Boreki, pelo menos uma coisa deu certo
    ele não vem já com o sort, porém, no total aparece uma setinha para você poder usar o Sort

    Outra coisa, eu gostaria de saber como faço para utilizar a formula para deixar uma linha de cada cor, ("iif(RowNumber....") no Matrix...estou tentando usar mas vem tudo bagunçado. estou fazendo assim

    =IIf(RowNumber("matrix1_juncao") mod 2= 0 ,  "White", "Silver")

    Mas vem tudo bagunçado

    Não sei porque também não vem ordenado por subtotal mas aparece aquela seta para você poder usar o Sort manualmente, não estou usando sort em nenhuma outra parte do relatório.



    Vou tentando aqui,
    Desde já,


    Obrigado !
    Paulo Eduardo Bueno
    quinta-feira, 4 de dezembro de 2008 12:29
  • Paulo,

     

    O interactive Sort permite ao usuario ordenar durante a visualização. Você pode escolher a ordenação inicial nas propriedades do grupo. Edit o grupo junção vá na tab 'Sorting' e use a sua expressão de totalização =Sum(Fields!Valor.Value)

     

    Isso fará com que o grupo venha ordenado pelo total incialmente. Com relação as linhas alternadas em matrix, você não pode usar RowNumber porque ele retornará o numero da linha usada pelo dataset e não a 'linha' da matrix. Para fazer isso em uma matrix você tem que usar uma expressão um pouco mais complicada. Existe um artigo do Chris Hays descrevendo como voc^e pode fazer isso:

    http://blogs.msdn.com/chrishays/archive/2004/08/30/GreenBarMatrix.aspx

     

    Eu coloquei um exemplo no meu site, usando a ordenação pelo total e o efeito de linhas alternadas descrito no link acima.

    http://www.boreki.eng.br/tutoriais/reportviewer/ReportViewerPage.aspx?ReportName=report2.rdlc

     

    Espero que ajude.

     

    Att

    Boreki

     

    quinta-feira, 4 de dezembro de 2008 21:51
  • Perfeito Boreki !!!!!
    Finalmente, Funcionou!

    Muito obrigado por sua ajuda e paciência pra me ajudar nisso rsrsr, muito obrigado mesmo 



    !!!

    Paulo Eduardo Bueno
    sexta-feira, 5 de dezembro de 2008 10:58