Solucionado (ver solução)
Solucionado
(ver solução)
11
respostas

Expressão para utilizar querys diferentes

Bom dia galera, tenho uma dúvida, eu possuo um relatório no qual carrega os dado no caso um texto de uma determinada tabela, porém gostaria de que carregasse os dados de outra tabela conforme o retorno , pergunta há como fazer isto no ireport, mudar a query ou buscar em tabelas diferentes conforme um valor a ser verificado?

11 respostas

Givanildo, apenas para ver se eu entendi corretamente:

Você vai ter um parâmetro no relatório, certo ? Se o valor for 1 por exemplo a SQL sera de uma tabela A, se o valor for 2 a SQL sera da tabela B, é isso ?

Boa tarde Mateus, é isto mesmo, eu terei uma consulta no Ireports com uma tabela X no qual conforme o valor retornado ele executa uma consulta em uma tabela Y, se não executa consulta na tabela Z, como posso fazer isto? No report devo tentar onde colocamos a query e utilizar o expressões do Ireports? Ou melhor eu utilizo uma query fazendo a consulta nas tabelas e posso utilizar a expressão .

opa, você vai ter que fazer injeção de código sql para fazer isso que você quer. pois a cada linha ele vai ter que ir no banco de dados e buscar a informação correta.

Givanildo, ja tentou passar a SQL inteira como parâmetro para o relatório ?

Boa tarde Matheus, só para explicar melhor o problema

Select ValorVerificador from tabelaValorParaValidar

Se o valor ValorVerificador = null

Select texto from tabela1

Se não

Select texto from tabela2

Entendeu, como posso fazer isto?Consigo isto no expression com ternário? ? :

Como posso passar a query como parametro, não tenho muita experiência no funcionamento do Ireports.

Obrigado.

Givanildo acho que seu problema da para resolver apenas com SQL, irei precisar de algumas informações:

  • SQL do relatório
  • Quais campos você precisará no relatório
  • O que você esta querendo mostrar no relatório
  • Qual o campo que será feito a condição do nulo
  • Qual o campo que deve mudar de acordo com o nulo

Bom dia Matheus, então acho que consegui, fazer o que queria , na segunda vou validar como cliente, se tiver correto fechado, se não eu te passo o que fiz, aproveitando, tem uma expressão que pode ser utilizado na banda para que ela não apareça caso não haja resultados É só colocar na Print When expression" da banda: new Boolean($F{algumCampoResultado}!= null)

É isto mesmo? Valew Matheus, Obrigado!

Fala ai Givanildo, que bom que esta conseguindo atingir seu objetivo, fico feliz.

Sim, exatamente isso, a opção Print When Expression devolve um boolean de quando a banda deve ser impressa de acordo com uma condição passada.

Vale lembrar que essa opção não se restringe apenas a band, frames, group footer, group header, header, detail, ou seja, quase todas as opções possuem tal recurso.

Abraçooos, fico no aguardo de sua resposta.

Boa noite Matheus , só para finalizar, o que eu que precisava , consegui, agradeço aí a força, valew!

Boa noite Givanildo, maravilha, não deixe de marcar o tópico como resolvido e sempre que precisar não deixe de criar suas dúvidas.

Abraçoos.

solução!

Bom a solução foi a seguinte: Fiz a query com as tabelas X,Y, Z onde conforme valor retornado de um campo dá X, ele mostrava um valor dá Y ou X, utilizei a expressão abaixo ($F{campoDeX} != null ? $F{CampoDeY} : $F{CampoDeZ}

Foi isto, obrigado!