Preciso de uma SQL que nos parâmetros do IReport, ele aceite diversos ids. Preciso de um relatório de diversas maquinas no caso, essas maquinas serão indicadas pelo id.
Exemplo:
where id =1,5,8,10.
mas pode ser 2 ou 1000 maquinas e agora?
Preciso de uma SQL que nos parâmetros do IReport, ele aceite diversos ids. Preciso de um relatório de diversas maquinas no caso, essas maquinas serão indicadas pelo id.
Exemplo:
where id =1,5,8,10.
mas pode ser 2 ou 1000 maquinas e agora?
Pode ser feito desse jeito,mas não ficou muito clara sua dúvida.
SELECT * FROM MAQUINAS WHERE ID IN (1,2,3,4,5,6,7,8,9,...);
Eu vi isso, mas como eu vou criar essa SQL dinamica?
Exemplo: faço um filtro por data. fica assim:
where date between $P{dataIni} and $P{dataFim}
viu que são 2 parâmetros?, mas as maquinas, não podem ser 2,3,10 parâmetros. tem que ser de 1 ao infinito. Tipo uma lista. Eu preciso ao invés de vários parâmetros no IReport, eu preciso ter 1, que é a lista de ids.
Tentei isso
where date between $P{dataIni} and $P{dataFim} and machineId IN ($P{machines})`
quando abro o formulário ele pergunta qual String quero usar. eu coloco 44, vem a maquina 44, coloco 45 vem a maquina 45 ai tudo certo.
eu coloco 44,45. Só vem a 44.
eu coloquei
where date between $P{dataIni} and $P{dataFim} and machineId IN (44,45)
e vem as duas, achei que era por causa da “,” então coloquei no relatório para aparecer oque é $P{machines}, mesmo escrevendo 44,45. No relatório só vem a maquina 44. E no texto impresso esta 44,45. Não sei porque ele esta ignorando depois da , na query, mas no text não?
achei uma solução mas nao me atende.
SELECT * FROM ORDERS WHERE $X{IN, SHIPCOUNTRY, myCountries}
esse IN, pega de um conteudo de dentro de uma tabela. Mas nao pode ser de uma tabela. Tem que ser do parametro enviado do cliente.
Solução.
antes de chamar o relatorio, meu programa pega todas as maquinas que vai fazer a pesquisa. Vai na tabela de pesquisa e grava com uma tag. essa tag é um time de quando o cliente pediu.
no ireport
where date between $P{dataIni} and $P{dataFim} and machineId IN
(select machineId from temporary_id_machines where tag = $P{tagSrc})
esse tag é enviado depois da gravação para a criação do relatorio.
tudo certo!