Usuário com melhor resposta
SubTotal Customizado?

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
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!!
Todas as Respostas
-
-
-
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
-
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
-
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....
-
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!
-
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!!