Boa tarde pessoal,
Estou usando o IReport 3.5.2, e me passaram a missão de fazer relatórios dinâmicos, ou seja, em tempo de execução eu defino qual SQL eu quero executar.
E então o sql é colocado no .jasper de acordo com as tabelas (ComboBox ou Checkbox) escolhidas pelo cliente.
Tudo isso integrado a um projeto em JSF.
Peguei umas video-aulas do ireport e vi alguns exemplo, mas nao consegui o que eu queria.
o máximo q eu consegui foi gerar o relatório com a query do IReport, e tambem fazer subqueries.
Como posso passar o SQL como parametro ?
Como devo preparar o ireport pra receber o parametro ?
Voce nao passa a query, vc passa um List como dataSource, assim vc consegue fazer que quiser, efetua a pesquisa via programacao e passa o list do resultado.
Boa tarde pessoal,
Estou usando o IReport 3.5.2, e me passaram a missão de fazer relatórios dinâmicos, ou seja, em tempo de execução eu defino qual SQL eu quero executar.
E então o sql é colocado no .jasper de acordo com as tabelas (ComboBox ou Checkbox) escolhidas pelo cliente.
Tudo isso integrado a um projeto em JSF.
Peguei umas video-aulas do ireport e vi alguns exemplo, mas nao consegui o que eu queria.
o máximo q eu consegui foi gerar o relatório com a query do IReport, e tambem fazer subqueries.
Como posso passar o SQL como parametro ?
Como devo preparar o ireport pra receber o parametro ?
:arrow: Qualquer ajuda agradeço!
Sim JL, é isso mesmo que eu to querendo.
Inclusive eu ja tinha visto esse exemplo e ja tinha baixado umas APIs do dynamic jasper.
mas ainda nao sei como implementa-lo.
se alguem tiver alguma coisa de dynamic jasper seria de grande ajuda!
[]´s
B
brunosales85
Ou isso ou então utilizar o IReport!
Só que nessa versão 3.5.2 eu nao to sabendo como criar os parâmetros.
Eu crio o query … Where id = $P{Param} , só que o IReport desconhece o $.
creio que se deva fazer alguma coisa pra adicionar esses parametros…
nao sei o que é!
mas continuo procurando!
[]´s
M
Mero_Aprendiz
Faça assim, usando a exclamação:
[]'s
JL
B
brunosales85
tentei rolar esse query no IReport:
SELECT
municipio.“id_municipio” AS municipio_id_municipio,
municipio.“sg_municipio” AS municipio_sg_municipio,
municipio.“nm_municipio” AS municipio_nm_municipio
FROM
“public”.“municipio” municipio
WHERE
id_regiao_integracao = $P!{municipio_id_regiao_integracao}
e o erro foi esse:
Error: SQL problems: ERROR: syntax error at or near “= $”
Como eu tava dizendo, creio que tenho que fazer algo no ireport…
so nao sei como!
as informacoes que vi nao solucionaram minha duvida!
[]´s
B
brunosales85
opa!
consegui criar os parâmetros!
logo mais entrarei com mais duvidas, so que desta vez sobre a aplicação.
obrigado ae!
B
brunosales85
Fala galera!
como prometido eu disse que ia voltar!
hehe! dito e feito!
seguinte, ja consegui passar um sql como parametro, a onda agora é como deixar o layout do jasper preparado pra receber o SQL.
publicJasperPrintgerar()throwsExcecaoRepositorio{JasperPrintrel=null;try{Connectioncon=Conexao.getConnection();HashMapmap=newHashMap();Stringquery="select mun.nm_municipio as NomeMunicipio, "+" tem.aa_referencia as AnoReferencia , "+"ds_item_dado as DescItem, "+"his.vr_historico as ValorItem "+"from hist_item_dado his, "+"item_dado item, "+"municipio mun, "+"tempo tem "+"where mun.id_municipio in (1501402) and "+"mun.id_local = his.id_local and "+"his.id_item_dado = item.id_item_dado and "+"his.id_tempo in (6) and "+"item.id_item_dado in (3219) and "+"his.id_tempo = tem.id_tempo ";map.put("regInt",query);StringarquivoJasper="Municipio.jasper";rel=JasperFillManager.fillReport(arquivoJasper,map,con);}catch(JRExceptione){JOptionPane.showMessageDialog(null,e.getMessage());}returnrel;
}}
eis o codigo da aplicação. a aplicação esta ok !
Preparei o layout do arquivoJasper pra receber esses campos, porém eu passo o SQL como parametro -> $P!(SQL)
Aí ja que o SQL depende da aplicação entao, o ireport n deixa compilar pq nao encontra os campos!
hehe
espero ter sido claro desta vez!
agradeço a ajuda desde ja!
[]´s
Eu faço o que vc quer normalmente. Tenho no meu jasper um parâmetro chamado parSql e jogo nele uma string que contém meu SQL. Ai uso ele com o $P!{parSql}, como vc já disse.
Parece que seu problema agora é que o jasper não compila pq vc não tem os campos, afinal, ele não consegue “resolver” o parSql e criar os campos, é isso?
Bem, eu solucionei isso facilmente criando os campos “na mão”! Isso mesmo! Vá até a lista de campos e crie-os manualmente, o jasper vai compilar e tudo vai ficar ok. Ah! Mas presta atenção! Vc tem que criar os campos certinhos da forma como eles serão trazidos pelo sql (quero dizer nome, tipo e tamanho), senão vc terá erros em tempo de execução do seu relatório.