[Resolvido]Problema ao realizar somas com o Jasper (iReport)

5 respostas
T

E aew galera, blz?
eu estou com um problema muito estranho. O.o
Eu tenho 3 grupos e um detail. No footer de cada grupo, tem a soma de um valor do detail.
Ou seja. No final do primeiro grupo, tem a soma dos valores desse grupo.
No final do segundo, tem esses mesmos valores e mais outros.
No terceiro tem a soma de vários valores.
Seria um esquema de hierarquia. uahuah
Unidade>Especialidade>Tipo>Valor

Só que quando eu faço a soma pelo iReports, ele nao ta dando certo. Eu coloco para fazer a soma da seguinte forma:
Tem três variáveis: totalTipo(armazena o resultado da soma dos valores no grupo Tipo), totalEspecialidade(armazena a soma de todos os totalTipo deste grupo), e o totalUnidade (que armazena todos os totalEspecialidade do grupo Unidade).

o totalTipo, totalEspecialidade, e totalUnidade puis: Reset Type - Group (o grupo é o próprio grupo).
No totalTipo tem increment normal do valor.
No totalEspecialidade tem increment group do totalTipo
No totalUnidade tem increment group do totalEspecialidade.

Só q nao ta mostrandos os valores certos… o.O
parece que ele não soma o primeiro valor. Tipo, se ele deveria somar 1+2+3, ele devolve 5.
E quando só tem um valor, ele devolve “null”. o que faço?
fiz algo d errado/alguem sugere outra forma melhor?

5 Respostas

javer

Certeza que tem algo errado (garanto), mas como fica muito difícil ajudar no iReport sem ver o relatório, o XML, a tabela de dados, etc, você pode criar uma variável para somar o total, ou seja, ao invés de somar os 3 valores você vai ter apenas 1 variável somando tudo, e coloque o Reset: Report, veja se sai correta a soma.

T

entao… o problema é que assim não vai servir pro que estou querendo… vo tenta fazer um esquema de como é:

Unidade 01 - Nome da unidade

Especialidade A0 - Nome da Especialidade

Tipo 1 - Nome do tipo
          Primeiro Objeto - Valor: 0,1
          Segundo Objeto - Valor: 0,3
     Footer Tipo 1 = 0,4

Tipo 2 - Nome do outro tipo
          Primeiro Objeto - Valor: 0,5
          Segundo Objeto - Valor: 0,2
     Footer Tipo 2 = 0,7

Footer Especialidade = 1,1

Especialidade B0 - Nome 2

Tipo 1 
          Primeiro Objeto - Valor: 2
     Footer Tipo 1 = 2

Footer Especialidade = 2

Footer Unidade 01 = 3,1

É mais ou menos isso… só que podem haver vários grupos(inclusive na unidade), entendeu?
Então do jeito que você sugeriu não vai dar =/
Melhorou um pouco pra entender como está meu relatório?

EDIT: (Bom, peguei a parte do XML que faz a declaração da variável. Acho que pode ajudar)









javer

Se você somar o valor de cada Objeto dentro do grupo ESPECIALIDADE não lhe dá o valor correto?

T

entao… não está saindo correto exatamente aí! :slight_smile:
bem, acho que pode ajudar a melhorar algo…
no programa, existem duas opções, com ou sem esse agrupamento por Tipo.
Aí eu fiz um “Print when expression” de q quando for true, o tipo não imprime.
ai quando eu uso agrupamento por tipo, os valores do tipo saem certos. Os da especialidade apresentam valor de “null” quando só tem 1 valor no tipo. Quando possui mais de um objeto, parece que ele não soma o primero valor.
E os valores da unidade estão somando apenas os da especialidade que aparecem.

Já quando nao agrupo por tipo, só aparece especialidade e unidade (é o certo :stuck_out_tongue: ) só q ele tb n soma o ultimo valor…

isso pode ser algum bug? o.O
eu acho que o especialidade tá tentando validar antes de aparecer o valor do tipo… só se for… tem como eu ver, testar isso?
dei uma olhada aqui no banco, não tem nenhum valor nulo, ou 0.
mais um teste: Coloquei o objeto como sendo 1 para testar se não é problema na consulta, ou algo do tipo. Continua com problema. O.o
é algo no relatório mesmo

T

Ha… descobri o erro… realmente era um bug… eu tentei de várias formas e nao deu certo. Fiquei 2 dias praticamente tentando.
Tentei, tentei e nada. Eu deletei a variável, criei d novo da mesma forma, e deu certo! auhauh
malditos bugs!

Fica aí a dica! :slight_smile:

Criado 20 de janeiro de 2009
Ultima resposta 22 de jan. de 2009
Respostas 5
Participantes 2