Problema: Query em Jasper dando pau

9 respostas
H

Seguinte, to fazendo um relatorio q tem uma query do seguinte tipo:

SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE data_inicio LIKE '%$P{ANO}%';

So q esta query n ta pegando, ta dando seguinte erro (no IReport):

Error:SQL Problems:O índice da coluna está fora do intervalo: 1, número de colunas: 0.

Alguem sabe se esta query eh possivel em Jasper (no Postgres eu testei e pega) ou como arruma-la? Vlws…

9 Respostas

J

Tente fazer com apenas um campo
SELECT nome FROM sistema WHERE data_inicio LIKE ‘%$P{ANO}%’;

H

Deu msm coisa. Eu quero fazer 1 relatorio q mostra os sistemas de um determinado ano, so q o campo “data_inicio” eh do tipo date, ou seja, no formato “yyyy-mm-dd” e p fazer a procura por ano nesse campo eu so achei essa query, e acho q ta dando pau no ireport por causa desta query, alguem sabe uma outra query q resolveria ou sabe como resolver este pau? Vlw…

J

vc tentou ao inves de usar o parametro passar a data direto na query no formato yyyy-mm-dd ?
Pq se assim funfar…é só vc mexer no formato da data do parametro.
Ok?

H

Eu n posso passar a data no formato yyyy-mm-dd pq eu quero q o relatorio me mostre os sistemas de um determinado ano, e n de um dia/mes especifico do ano, eu kero listar por ano, entendeu? Eu axo q o Ireport ta c pau c esta query, agora o porquê eu n sei :frowning:

J

Então neste caso seu parametro é um int certo?
Bom ai vc tenta assim
SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE YEAR(data_inicio) LIKE ‘%$P{ANO}%’;

H

ANO eh uma String, mas posso fazer cast p int, isso n eh problema. Mas eu axo q o IReport ta com bronca exatamente nisso: ‘%$P{ANO}%’

Ai ta lascando, mas eu mudei, vo tirar a query do relatorio e executa-la no servidor e receber os dados no cliente, montando assim o relatorio, ate q enfim encontrei 1 forma, atraves de Beans. Vlw…

J

vc tentou assim: SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE YEAR(data_inicio) = 2007;

tem q funcionar assim…retire o like e coloque a função year
t+

matheuscechito

jr.mg:
vc tentou assim: SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE YEAR(data_inicio) = 2007;

tem q funcionar assim…retire o like e coloque a função year
t+

é…acho q isso irá funcionar…o LIKE é um comando muito pesado, use sempre o “=” qdo puder…

acredito q ficará assim:

SELECT id, nome, descricao, data_inicio, estado FROM sistema WHERE YEAR(data_inicio) = $P{ANO}
H

ja tinha solucionado o problema, mas eh interssante essa query q vc propuseram, vlw

Criado 21 de janeiro de 2007
Ultima resposta 25 de jan. de 2007
Respostas 9
Participantes 3