| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 10:58:16
|
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
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 11:24:13
|
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:
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/02/2010 13:19:05
|
TheKill
GUJ Master
![[Avatar]](/images/avatar/6a59767ffedbb0c50130b5f43340d816.png)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 09:57:48
|
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:04:14
|
TheKill
GUJ Master
![[Avatar]](/images/avatar/6a59767ffedbb0c50130b5f43340d816.png)
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
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 12:41:33
|
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
|
|
|
 |
|
|
|
|