none
SubTotal Customizado? RRS feed

  • Pergunta

  • Preciso fazer o seguinte relatório:

     

     

      T1     T2     T3     T4     T2+T3

    qtdeA     9       3      2       4        5

    qtdeB                     6                 6

     

    Meu relatório atual está assim:

     

     

      T1     T2     T3     T4    

    qtdeA     9       3      2       4      

    qtdeB                     6             

     

    Mas não sei como criar essa coluna de soma.

     

    Estou utilizando uma matriz, pois com a table não consigo criar as colunas T1 a T4 automaticamente (elas vêm de dados cadastrados no banco)

     

    Uma outra dúvida, se por acaso na linha qtdeB nao houvesse nenhum número, eu gostaria q a linha fosse mostrada com todos os valores 0, como posso fazer isso?

     

    Alguma idéia?

     

    Obrigada

     

    quarta-feira, 24 de outubro de 2007 13:32

Respostas

  • Consegui resolver meu problema com uma table.

    Porém, se meus dados no banco mudarem, terei que atualizar meu relatório.

    o que fiz foi um

    =Sum(iif(Fields!SigTipCnm.Value="T1",Fields!VlrTotFatCliMov.Value,0.00)) para cada coluna...

     

    Resolveu, mas não foi a melhor solução!!

     

    segunda-feira, 29 de outubro de 2007 11:16

Todas as Respostas

  • BBSk,

     

    Você poderia fazer esta coluna de soma diretamente no seu datasource!!!

     

    Em relação ao número aparecer como zero você poderia utilizar a função IsNull!!!

    quarta-feira, 24 de outubro de 2007 15:10
  • BBSk,

    vc pode fazer isso com subtotal da propria matrix, ela vai somar toda a linha. Para resolver o problema, conforme o coleta falou o isnull vai resolver....
    quarta-feira, 24 de outubro de 2007 18:10
  • Como você disse, o subtotal da matriz vai somar toda a linha, mas eu quero somar apenas 2 campos da linha, o T2 e o T3.

    Esse isnull deve ser colocado onde? O que o isnull faz? Coloca 0 no lugar do "vazio"? Se for, nao é isso que eu quero (isso eu sei fazer), o que preciso é que uma linha, onde todos os itens são 0 ou nulos no banco, sejam exibidos.

    Por exemplo, eu quero que meu relatorio mostre a linha QtdeC, mesmo sem valores >0 ou nulos.

     

       T1    T2    T3   T4       T2+T3

    QtdeA     3      2     6     4           8

    QtdeB             6                        6

    QtdeC            

     

    E eu so consigo que o meu report mostre sen a linha QtdeC, assim:

     

       T1    T2    T3   T4       T2+T3

    QtdeA     3      2     6     4           8

    QtdeB             6                        6

    quarta-feira, 24 de outubro de 2007 18:43
  • Eu até tentei fazer uma coluna de soma no meu datasource, mas meu datasource possui vários registros onde cada um pode assumir as classificacoes T1 a T4 e eles sao agrupados pelos 2 rowgroups da matriz. Não sei como fazer essa soma no datasource.

    E se conseguisse realizar essa soma no datasource, tentei e não consegui criar uma coluna ou grupo independente do primeiro, sempre fica um grupo maior e outros como se fossem subgrupos. O que preciso é uma coluna como o subtotal da matriz, porém que só some 2 colunas e não todas.

     

    Na realidade, meu report tem essa estrutura:

     

    rowgroup1 rowgroup2      T1    T2    T3   T4       T2+T3

    TipoA       QtdeA         3      2     6      4           8

                     QtdeB                  6                          6

           QtdeC

    TipoB      QtdeA          1      3     8      2          11

                     QtdeB          2     7      2                   9 

           QtdeC         2             1      3           1

     

    quarta-feira, 24 de outubro de 2007 18:59
  • tem como vc manda a consulta do seu dataset pra mim?

    Assim fica mais facil eu simular aqui, outra coisa vc quer somar somente t2+t3 ou qualquer outra..... Pq dependendo vai ficar meio complexo o bacana seria fazer essa soma no proprio codigo. Geralmente quando tenho que fazer isso faço um classe com a consulta no lugar de usar compontes... Assim posso manipular melhor as informações....

    quinta-feira, 25 de outubro de 2007 12:47
  • Henry,

     

    A consulta utilizada é a seguinte:

    SELECT     TipoLigacao.SigTipLig, ClasseConsumo.SigClsCnm, FaixaConsumo.SigFaiCnm, 
                         ConsolidacaoMovimento.CnmTotEneFatKWhCliMov, ConsolidacaoMovimento.QtdUndCnmCliMov, 
                         ConsolidacaoMovimento.VlrTotFatCliMov, ConsolidacaoMovimento.VlrTotRdcRctCliMov, 
                         ConsolidacaoMovimento.VlrTotAumRctCliMov, ConsolidacaoMovimento.AnoCptCliMov, 
                         ConsolidacaoMovimento.MesCptCliMov, PJ.SiglaPj, PJ.RazaoSocialPj, 
                         TipoConsumidor.SigTipCnm, TipoLigacao.DscTipLig, TipoLigacao.IdeTipLig,   

                        Fechamento.NumPrcMesRctFec, 
                         Fechamento.NumDocMesRctFec, Fechamento.PcrMesRctFec, Fechamento.SitDfrMesRctFec, 
                          Movimento_Fatura.VlrFatMov
    FROM         ConsolidacaoMovimento LEFT OUTER JOIN
                       Fechamento ON ConsolidacaoMovimento.IdeAgt = Fechamento.IdeAgt AND 
                          ConsolidacaoMovimento.AnoCptCliMov = Fechamento.AnoCptFec AND 
                          ConsolidacaoMovimento.MesCptCliMov = Fechamento.MesCptFec INNER JOIN
                          FaixaConsumo ON ConsolidacaoMovimento.IdeFaiCnm = FaixaConsumo.IdeFaiCnm INNER JOIN
                          TipoLigacao ON ConsolidacaoMovimento.IdeLig = TipoLigacao.IdeTipLig INNER JOIN
                          ClasseConsumo ON ConsolidacaoMovimento.IdeClsCnm = ClasseConsumo.IdeClsCnm INNER JOIN
                          PJ ON ConsolidacaoMovimento.IdeAgt = PJ.IdeAgt INNER JOIN
                          TipoConsumidor ON ConsolidacaoMovimento.IdeTipCnm = TipoConsumidor.IdeTipCnm INNER JOIN
                          Movimento_Fatura ON ConsolidacaoMovimento.IdeAgt = Movimento_Fatura.IdeAgt
    WHERE     (ConsolidacaoMovimento.IdeAgt = @IdeAgt) AND (ConsolidacaoMovimento.AnoCptCliMov = @AnoCptCliMov) AND (ConsolidacaoMovimento.MesCptCliMov = @MesCptCliMov)

     

    os agrupamentos das linhas (rowgroups) sao por FaixaConsumo.SigFaiCnm e TipoLigacao.SigTipLig. E o agrupamento da coluna (column group) é TipoConsumidor.SigTipCnm.

     

    A tabela é assim:

    _______________________| SigTipCnm1 | SigTipCnm2 | SigTipCnm3 | SigTipCnm4 |

    | SigFaiCnm1  | SigTipLigA |         8                10                   4                  9          |

    |____________| SigTipLigC |         3                                      2                  3          |

    | SigFaiCnm 2 | SigTipLigA |                            2                    7                  2          |

    |____________| SigTipLigB |         1                 1                    2                  1          |

     

    E tem que ficar assim:

     

    _______________________| SigTipCnm1 | SigTipCnm2 | SigTipCnm3 | SigTipCnm4 |     SigTipCnm2 +SigTipCnm3 

    | SigFaiCnm1  | SigTipLigA |         8                10                   4                  9          |                     14                    |

    |                     | SigTipLigB |                                                                                 |                                            |

    |                     | SigTipLigC |         3                                      2                  3           |                      2                    |

    | SigFaiCnm 2 | SigTipLigA |                            2                    7                  2          |                      9                    |

    |                     | SigTipLigB |         1                 1                    2                  1          |                      3                    |

    |                     | SIgTipLigC |                                                                                 |                                            |

     

    As colunas SigTipCnm sao retornadas do banco, mas serão fixas, e preciso somar especificamente as colunas 2 e 3.

     

    Continuo com o problema de nao conseguir mostrar uma linha que possui apenas valores nulos ou 0.

     

    Eu consegui fazer algo parecido utilizando uma table, mas como meus dados sao do tipo Money, gera um erro ao realizar a seguinte expressao: =Sum(iif(Fields!SigTipCnm.Value="T1",Fields!VlrTotFatCliMov.Value,0))

    Fiz testes com float e int e funciona perfeitamente, mas com money na hora de disponibilizar os dados aparece #error no lugar da soma. (Me parece um bug do reporting services).

    Outro problema da tabela é que na coluna SigFaiCnm aparece 3 vezes cada valor, eu consegui omiti-los pela propriedade HideDuplicates, mas as linhas continuam aparecendo só que sem nada escrito. Entao tentei utilizar uma <expression> na propriedade borderStyle, mas tb nao funcionou...

     

    Qualquer solução, seja com a matriz ou com a table, que resolvam esses problemas, seria ótima!!

     

    Muito Obrigada!

     

    quinta-feira, 25 de outubro de 2007 19:01
  • Consegui resolver meu problema com uma table.

    Porém, se meus dados no banco mudarem, terei que atualizar meu relatório.

    o que fiz foi um

    =Sum(iif(Fields!SigTipCnm.Value="T1",Fields!VlrTotFatCliMov.Value,0.00)) para cada coluna...

     

    Resolveu, mas não foi a melhor solução!!

     

    segunda-feira, 29 de outubro de 2007 11:16