Problema com variável de somatório no Ireport  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
Kaio_C
What is classpath?

Membro desde: 26/01/2010 15:42:25
Mensagens: 5
Offline

Estou com um problema com uma variável de somatório no meu relatório.
Tenho uma tabela da seguinte forma:

ano/parcela | receita | Imposto | Valor pago ------ ano/parcela | receita | Imposto | Valor pago
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------

Uma linha na realidade são dois registros, mas com a consulta utilizando uma "junção" tenho os dois registros numa única linha.
O problema é o seguinte, quando tiver apenas um registro, quero mostrar apenas a primeira parte do cabeçalho, pois a segunda parte estaria vazia.
Consegui um jeito de fazer, tenho que fazer uma soma total utilizando uma coluna qualquer do lado direito da tabela, se a soma for nula, então não mostro o segundo cabeçalho.
Porém o problema é que tenho que utilizar esta variável como parâmetro no cabeçalho da tabela, ou seja, a soma ainda não foi realizada e a variável sempre estará nula.
Gostaria de saber se existe alguma forma de fazer com que seja realizada a soma antes de desenhar o cabeçalho.
Ou se existe alguma outra solução ?

Obrigado,
Kaio Cesar
fbcarvalho
Thread.start()

Membro desde: 04/02/2010 12:20:54
Mensagens: 30
Localização: Belém - PA
Offline

Ao invés de usar uma variável com uma soma qualquer, use direto o campo (Field) da consulta na expressão condicional

Ex:
TheKill
GUJ Master
[Avatar]

Membro desde: 29/09/2006 18:06:30
Mensagens: 1142
Localização: Araranguá - SC
Offline

outra solução, nao deixe para o relatório fazer cálculos

faça os calculos na aplicação e envie para o relatório os resultados encontrados

logo, vc tera todas as informações concluidas


Att. Jonas

Pessoal se foi respondido com eficiência...

Nao custa finalizar o topico ^^ [RESOLVIDO]

Isso ai, valeu xD

GrupoJavaSC

[Email] [MSN]
Kaio_C
What is classpath?

Membro desde: 26/01/2010 15:42:25
Mensagens: 5
Offline

Primeiramente TheKill e fbcarvalho muito obrigado pelas respostas.
"fbcarvalho", já havia pensado nisso, utilizar um campo como parâmetro, porém o problema é semelhante,
Os campos só tem valor em tempo de execução do registro, ou seja, ele só tem valor na linha onde é executado.
No cabeçalho não tenho como manipular um registro específico.
Por isso a idéia da variável, porém, como a mesma deriva dos registros, também só terá seu valor completo após a execução de todos os registros, e é nula para o cabeçalho.
Minha idéia era encontrar alguma propriedade que fizesse com que a variável fosse processada com prioridade ao resto do relatório.
O que pretendo é ao ter apenas um registro apenas mostrar o ""cabeçalho"" da esquerda, escondendo o da direita. Já havia Conseguido esconder a linha do registro da direita utilizando exatamente esta solução que vc deu "fbcarvalho", porém não funciona para o cabeçalho.

TheKill, estou utilizando uma aplicação Web que faz cadastros em um banco de dados mysql.
Assim, minhas opções são fazer a operação com uma consulta SQL, ou fazer a operação no relatório.
O somatório feito pelo relatório seria apenas uma alternativa, não irá me agregar valor a nível de informação,
seria apenas um parâmetro para a condição de mostrar ou não o cabeçalho da direita.

Estou tentando fazer a operação no relatório, pois não quero deixar minha consulta no MySQL muito pesada.
Esta é a minha consulta SQL. Para dar uma idéia de como é a estrutura da linha :

---------------------------------------------------------------------------------------------------------------------------------------------------------
SELECT A.num_documento as num_documento, A.ano as ano, A.parcela as parcela, A.valor_receita as valor_receita, A.iss_capiturado as iss_capiturado,
A.iss_pago as iss_pago, A.iss_devido as iss_devido, B.ano as ano_B, B.parcela as parcela_B, B.valor_receita as valor_receita_B,
B.iss_capiturado as iss_capturado_B, B.iss_pago as iss_pago_B, B.iss_devido as iss_devido_B
FROM (SELECT * FROM tb_inf_dados_comp as C WHERE C.seq_comp%2=1 AND C.num_documento = $P{num_doc} ) as A
LEFT OUTER JOIN (SELECT * FROM tb_inf_dados_comp as D WHERE D.seq_comp%2=0 AND D.num_documento = $P{num_doc}) as B
ON (A.seq_comp+1 = B.seq_comp)
ORDER BY A.ano, A.parcela
---------------------------------------------------------------------------------------------------------------------------------------------------------

Muito Obrigado pelas respostas,
Quem tiver outras soluções, vai ajudar bastante.

Obrigado,
Kaio Cesar
TheKill
GUJ Master
[Avatar]

Membro desde: 29/09/2006 18:06:30
Mensagens: 1142
Localização: Araranguá - SC
Offline

Opa, bom dia..

Acredito que nas duas opções os resultados do processo vao ser iguais ou semelhantes..
Deixando para o relatório fica mais complexo, as vezes quebra-se muito a cabeça.. = muito tempo;
Já na aplicação, você tem um controle mais apurado das informações.. mesmo que nao seja para grava-la em BD..

Agiliza o processo do relatório



Att. Jonas

Pessoal se foi respondido com eficiência...

Nao custa finalizar o topico ^^ [RESOLVIDO]

Isso ai, valeu xD

GrupoJavaSC

[Email] [MSN]
Kaio_C
What is classpath?

Membro desde: 26/01/2010 15:42:25
Mensagens: 5
Offline

Consegui resolver meu problema,
setei a propriedade de "Reset type = None", para a minha variável,
Com isso, minha variável me devolve o valor nulo se não houver registro no lado direito,
Se houver registro, me devolve um valor não nulo(Porém, não necessariamente a soma total),
Com esta propriedade, consigo ampliar meu escopo e manipular a variável dentro do cabeçalho.

The Kill, não vou ter prejuízos por "carregar" um pouco mais meu gerador de relatório,
ele é um pouco complexo, mas manipula pequena quantidade de dados.
Mas pensei também em formas de realizar isto passando da aplicação para o iReport algum valor como parâmetro,
também funcionaria.

The Kill e FbCarvalho,
Valeu pela força.

Abraço
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team