To com uma dificuldade no ireport. Tenho um relatório que deve imprimir uma listagem de determinada tabela, porém a query pode ser de todas as linhas da tabela ou apenas de uma, de acordo com o parametro:
SELECT * FROM tb_carros
Ou
SELECT * FROM tb_carros WHERE id = $P{PARAM}
Como eu faço isso no ireport?
OBS.: Tem que ser no ireport mesmo, não pelo .java, senão eu passaria apenas o resultset…
amigo, quando vc cria o seu parametro existe um check box, te perguntando se vc quer que aquele parametro seje um prompt (sugestao), dai eh soh marcar esse check box, quando vc complia o seu relatorio aparece uma janela para vc poder passar os parametros.
Acontece que quando se cria a query no ireport, ela tem que ser fixa, alterando apenas os parametros…
Supondo q eu tenha definido o seguinte parametro com um valor já definido:
$P{param} = (oq for digitado no prompt)
E minha query no iReport é essa:
SELECT * FROM tb_carros WHERE id = $P{param}
Isso funciona se eu quiser um registro específico, ou seja, apenas o q tenha o ID q o cara digitou no prompt.
Mas oq eu quero é, se o cara deixar o parametro em branco, nesse caso o prompt, então deve ser impressa a listagem de Todos os registros da tabela…
nesse caso, essa query:
SELECT * FROM tb_carros
Se eu mantiver aquela primeira query, com o parametro, vai dar pau caso o usuario deixe em branco, pq a query vai ficar assim:
“SELECT * FROM tb_carros WHERE id =” , e isso é sintaticamente incorreto…
SELECT
paciente.`nome` AS paciente_nome,
paciente.`dataNasc` AS paciente_dataNasc,
FROM
`paciente` paciente
WHERE
paciente.`nome` like $P{nome}
dai quando vc criar seu parametro vc coloca como valor padrao “%”, desta forma mesmo, entre as aspas “%” senao da bug
dai blz… agora quando vc executar o seu relatorio vc coloca o simbolo de % que vai te retornar a lista toda
quando vc criar suas telas de consultas, vc define no seu metodo que quando o campo for vazio, passar o % como parametro
que ai funciona blz, testa ai e retorna pra ver se deu certo
bom, geralmente pesquisas por indices sao mais rapidas, mais vc teria que tratar isso na sua aplicacao para que o seu cliente nao precisasse digitar o cod para obter resultados, o que acontece e que na maioria das vezes ele digita soh um pedaco de string e deseja que se retorne um resultado, dai a sua criatividade eh quem manda.