Parâmetro no IReport - buscar todos os registros

Olá pessoal!

Sou nova aqui no fórum e tb to começando com Java e IReport.

Antes, tinha feito um relatório que buscava todos os registros do banco.
Ai criei um parâmetro para buscar apenas o registro digitado, mas gostaria de ter a opção de imprimir todos também.

Alguém sabe se tem alguma palavra-chave para buscar todos?
Ou tenho que criar um novo relatório sem a cláusula WHERE?

Obrigada!

Isso nada tem a ver com o iReport em si, mas com a lógica implementada para realizar uma consulta.
Quando você quer apenas um registro, limita a pesquisa com a cláusula WHERE seguida das colunas e parâmetros de pesquisa.
Pensando em algo que limite a pesquisa a todos os itens, você pode colocar algo que sempre vá retornar verdadeiro

SELECT col1, col2, col3, col4, colN FROM tabela WHERE 1 = 1;

Todos os registros (tuplas) em que 1 = 1 serão retornadas, ou seja, todas.
Além disso, temos:

SELECT col1, col2, col3, col4, colN FROM tabela WHERE col1 > -1;

Considerando que col1 seja chave primária e que ela seja gerenciada pelo banco de dados (se MySQL deve ser auto_incremente, se SQL Server deve ser identity e se Postgres ou Oracle, deve haver uma sequence para a mesma). Dessa forma, todos os registros cuja chave primária seja maior que -1 serão retornados, ou seja, todos os existentes.

Olá drsmachado!

Tenho um cadastro de fornecedores, onde a chave primária é a sigla do mesmo. Esse processo funciona dessa maneira tb?

Obrigada!

Quando se trata de sigla, ou seja, valor alfanumérico (letras e números) não. Mas você pode fazer, ao invés de

SELECT col1, col2, col3, col4, colN FROM tabela WHERE col1 > -1;

SELECT col1, col2, col3, col4, colN FROM tabela WHERE col1 <> -1;  

Considerando que col1 seja a chave primária, como se trata de sigla, ela será diferente (<>) de -1, correto?

Você pode usar o case também…

SELECT col1, col2, col3, col4, colN FROM tabela WHERE CASE WHEN $!P{param} > 0 THEN col1 = $!P{param} ELSE TRUE END

Assim, se o Parametro for 0, busca todos os valores, se não, busca só o que corresponde ao Parametro.

[quote=Gerva]Você pode usar o case também…

SELECT col1, col2, col3, col4, colN FROM tabela WHERE CASE WHEN $!P{param} > 0 THEN col1 = $!P{param} ELSE TRUE END

Assim, se o Parametro for 0, busca todos os valores, se não, busca só o que corresponde ao Parametro.[/quote]
Yeah!.
Existem N maneiras de fazer essa pesquisa…