| Autor |
Mensagem |
|
|
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
|
 |
|
|
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
|
 |
|
|
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
|
 |
|
|
Consegui Resolver meu problema,
Utilizei um componente quebra de página no meu relatório logo abaixo da tabela,
que obrigatóriamente será o último elemento da primeira página sempre.
Na quebra de página, utilizei a propriedade "Print When Expression".
A expressão utilizada foi new Boolean($V{PAGE_NUMBER}.equals( new Integer(1) )),
Ou seja, se a quebra estiver localizada na primeira página, a mesma será executada.
Caso a tabela invada a segunda página, a mesma será ignorada.
Atenciosamente,
Kaio Cesar O. Santos
|
 |
|
|
Olá,
Estou com um problema no ireport,
Como faço para ter uma quebra de página dinâmica ??
A situação é a seguinte, tenho alguns elementos na primeira página e "sempre" o último elemento da primeira página será
uma tabela. Se a tabela for muito grande esta poderá ocupar parte da segunda página.
O problema é o seguinte, quando a tabela é pequena, um elemento está invadindo a primeira página,
e isto não pode acontecer. Para isto utilizaria uma quebra de página.
E quando a tabela é grande e invade a segunda página não posso fazer quebra de página pois
a tabela invadiria a segunda página e empurraria elementos para a terceira, porém, meu relatório deve ter apenas duas páginas.
Para forçar a quebra de página estava marcando "run to bottom" nos elementos, no meu caso isto não serve.
De que forma poderia fazer esta quebra dinâmicamente?
Como poderia fazer com que quando a tabela invadisse a segunda página não houvesse quebra de página
e quando a tabela coubesse toda na primeira página houvesse a quebra?
Quem tiver alguma solução por favor me dá uma luz !!
Obrigado !!
Kaio CEsar
|
 |
|
|
|
|