Query SQL no iReport

Galera,

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? :cry:

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.

vlws

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…

oks, entendi sua duvida tente fazer o seguinte

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

vlws

vc tb pode fazer assim

select a.* from carros a where (a.id = $P{param} or $P{param} = 0)
e passa zero como default.

:roll:

Aeewww… funcionou das duas formas

Vlw Vijava e gzofera!!!

Só fiquei com uma dúvida agora… qual das formas tem uma menor queda de performance em relação a forma mais simples (select * from tabela) ?

Pq vou trabalhar com uma quantidade imensa de dados, e isso vai fazer muita diferença… :roll:

no meu ponto de vista pesquisas com id geramente são mais rapidos do q com String.

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.

vlws e qualquer coisa posta ai