Parametros no IReport!

25 respostas
D

Olá pessoal…
Agora estou com problemas na passagem de parametros no IReport, como devo fazer a minha query quando passo parametro…qual é a ordem…

  • faço a conecção com o banco…
  • defino o parametroem :VIEW/REPORTS PARAMETERS/ E DEFINO LÁ CERTO???
  • logo depois eu já vou no datasource/reportquery/ ai eu já monto a minha query: SELECT FROM PACIENTE WHERE CODIGO = $P{CODPAC}

SÓ QUE NA HORA QUE EU MANDO EXECUTA A MINHA QUERY ELE DÁ ERRO??? O QUE ACONTECE???

25 Respostas

smota

O iReport não tem suporte aos parâmetros do Jasper, então durante o desenvolvimento você deve simplesmente colocar a query expandida … depois pra colocar em produção você substitue pelos parâmetros.

D

ENTÃO SMOTA…
Quando eu estou montando o relatório no IReports, eu faço a minha query lá dentro do Report query certo???
Ex da minha query: SELECT FROM TABELA WHERE CODIGO = $P{CODPAC}
Certo???
ai eu tenho que dar um ReadFields certo??? nesta hora é que dá o erro de sql…

smota

é isso que eu to falando , no iReport no campo Report Query você não pode usar parâmetros.

Você seta tudo bonitinho no relatorio, mas no reportquery tem que colocar uma query completa pq o ireport não faz parse dessa query.

D
então eu  faço a querySELECT * FROM TABELA  e coloco o parametro no reports parameter e ??? ai no meu código java eu faço

HashMap mapa = new HashMap();

mapa.put(CODPAC,tCodigo.getText());

e ele reconhe ce que só quero este registro da tabela???
é isso…

brlima

[modo ABC]

1- Digite seu select sem parametro do iReport, ex: Select A,B,C from alfabeto

2- De um ReadFields.

3- Salve seu SQL.

4- Complete seu SQL com o filtro que deseja, ex: Select A,B,C from alfabeto where d=$P{parametro}

5- Salve seu SQL.

6- Largue tudo e de uma risada :lol:

[/modo ABC]

D

valeu camarada…

G

Qual das versões vocês aconselham a utilização? Estou usando a versão 0.3.1 e esta questão dos parâmetros é um sério problema.

Y

Para o Ireport reconhecer o parametro no SQL coloque o parametro assim
$P!{PARAM}

Sem mais

atoempotencia

yuusuke_urameshi2, de fato vc esta correto por a esclamação resolveu meu problema.

antoniopopete

Aproveitando o embalo do tópico.
Como passo parâmetro para um subrelatório?

colosos_colossus

colosos_colossus

saquei !!

hiarlay

Aproveitando o embalo do tópico.
Como passo parâmetro para um subrelatório?

atoempotencia

Passa por hashmap, cria o hashmap seta o parametro nele, e no ireport vc declara la como parametro e utiliza la.

andrestrindade

Bacana! No caso de colocar o WHERE parametro = $P!{PARAMETRO}, como esse parâmetro deve ser setado? :lol:
Grato.

hiarlay

andrestrindade:
Bacana! No caso de colocar o WHERE parametro = $P!{PARAMETRO}, como esse parâmetro deve ser setado? :lol:
Grato.

Isso, só que se ma exclamação ai no caso WHERE parametro = $P{PARAMETRO}

andrestrindade

hiarlay:
andrestrindade:
Bacana! No caso de colocar o WHERE parametro = $P!{PARAMETRO}, como esse parâmetro deve ser setado? :lol:
Grato.

Isso, só que se ma exclamação ai no caso WHERE parametro = $P{PARAMETRO}

Desculpa, formulei errado minha pergunta… No caso quero passar um parâmetro dentro do Java, no momento que chamo o arquivo jasper. Eu coloquei aquilo na minha query dentro do próprio iReport!!! Mas quero passar o parâmetro do Java -> Pro iReport.

Grato!

hiarlay

andrestrindade:
hiarlay:
andrestrindade:
Bacana! No caso de colocar o WHERE parametro = $P!{PARAMETRO}, como esse parâmetro deve ser setado? :lol:
Grato.

Isso, só que se ma exclamação ai no caso WHERE parametro = $P{PARAMETRO}

Desculpa, formulei errado minha pergunta… No caso quero passar um parâmetro dentro do Java, no momento que chamo o arquivo jasper. Eu coloquei aquilo na minha query dentro do próprio iReport!!! Mas quero passar o parâmetro do Java -> Pro iReport.

Grato!

No seu código java vc cria o map e seta lapor exemplo o código com a chave COD por exemplo.

Dai então você cria o parametro COD no ireport e o sql do ireport fica

select * from cliente where cod=$P{COD}

Por exemplo.

andrestrindade

hiarlay:
andrestrindade:
hiarlay:
andrestrindade:
Bacana! No caso de colocar o WHERE parametro = $P!{PARAMETRO}, como esse parâmetro deve ser setado? :lol:
Grato.

Isso, só que se ma exclamação ai no caso WHERE parametro = $P{PARAMETRO}

Desculpa, formulei errado minha pergunta… No caso quero passar um parâmetro dentro do Java, no momento que chamo o arquivo jasper. Eu coloquei aquilo na minha query dentro do próprio iReport!!! Mas quero passar o parâmetro do Java -> Pro iReport.

Grato!

No seu código java vc cria o map e seta lapor exemplo o código com a chave COD por exemplo.

Dai então você cria o parametro COD no ireport e o sql do ireport fica

select * from cliente where cod=$P{COD}

Por exemplo.

Exato! No iReport eu já havia colocado as condições… A minha dúvida é como fazê-lo no Java.

Muito obrigado pela resposta!

PS: Criamos a conta no fórum o mesmo dia :shock:

andrestrindade

Seguinte, eu estava gerando o PDF de teste. Estava tudo funcionando... Antes de eu adicionar o WHERE no meu .jasper e de passar o parâmetro.
Eu estava passando parâmetro null e sem nenhum WHERE. O RELATÓRIO FUNCIONAVA PERFEITAMENTE!!! :D
Estou fazendo alguma tolice... Segue o trecho que modifiquei, para geração do relatório com parâmetro.

O código 4158 existe.

// Mando o jasper gerar o relatório
HashMap<String, String> mp = new HashMap<String, String>();  
mp.put("1", "4158");
JasperPrint print = JasperFillManager.fillReport(jasper, mp,
conexao);

// Gero o PDF
preenchePdf(print);

O relatório está em branco, e no iReport está perfeito. Como é a maneira certa de passar o parâmetro?

hiarlay

o seu parâmetro la tem q ta com o nome da chave, nesse caso o parametro é chamado de 1 e seu valor é 4158.

andrestrindade

Exatamente assim que pensei. E o arquivo está sendo gerado, mas vazio. E de fato, existe o parâmetro 4158. Quando executo o preview do relatório, eu posso digitar o parâmetro. Se eu coloco pelo ireport - 4158, este é gerado corretamente… =\

hiarlay

escreve como ta o sql ai com o parametro

hugo.hlcxcx

Pessoal bom dia, estou com um problema parecido com o do usuário acima. Estou começando a usar o iReport e estou com uma dúvida: Tenho um relatório e dentro deste eu tenho um subrelatório. Preciso mostrar no report as informações de um cliente baseado no id dele (Nome, Email e etc…), e no subreport eu preciso mostrar se esse mesmo cliente já foi recadastrado, e mostrar tb os dados do seu recadastramento (IdRecadastramento, Data e etc…).

Os dados serão buscados em duas tabelas distintas (Clientes e Recadastramento) do banco.

No relatório estou usando a query:

select * from Contribuintes where CodigoContribuinte = XXXXX

no subrelatório eu preciso receber este Id que foi passado acima, e mostrar as informações do recadastramento deste Cliente.

select * from Recadastramento where CodigoContribuinte = $P!{CodigoContribuinte}

Tentei usar o parâmetro acima, mas não funciona. Na verdade nem compila.

Alguém se habilita a me dar um help ?

Valeu…

andrestrindade

Minha query está assim:

SELECT
campo_relatorio1,
campo_relatorio2,
campo_relatorio(…),
FROM TABELA_RELATORIO
WHERE CODIGO_RELATORIO = $P{codigo_relatorio}

andrestrindade

:-o
Já arrumei.

Estava realmente ERRADO

No MAP, é necessário colocar o nome do parâmetro e seu valor.
Ao menos pra assinatura que eu usei!

Ficou assim:

Criei um map, com nome “map”…
E no iReport eu tinha um parâmetro com nome $P{meu_parametro)
E dai nele, usei

map.put(“meu_parametro”,“valor_do_parametro”)

Funcionou! =)
=P

Criado 19 de março de 2004
Ultima resposta 29 de out. de 2010
Respostas 25
Participantes 11