Gente to fazendo, ou melhor, tentando fazer uns relatórios para um sistema, eu jah consegui criar o relatório e tal bonitinho, puxando os dados com um SELECT do banco, mas eu queria saber como eu vou fazer isso para integrar ao meu sistema, tipo quando eu clicar no “Gerar” ele acionar o evento e criar o relatório na hora, ou já puxar um pronto. Já importei o .JAR do iReport, tenho o plugin instalado para NetBeans 6.8, acho q a versão do plugin eh 3.7.3, Sistema desktop!
toda a ajuda eh bem vinda
vlw
Codigo que eu peguei de outro topico, mas naum ajudou mto.
packageTestes;importClasses.DAO.DAOPai;importjava.sql.SQLException;importjava.util.HashMap;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JRResultSetDataSource;importnet.sf.jasperreports.engine.JasperExportManager;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.view.JasperViewer;publicclassChamaRelextendsDAOPai{publicChamaRel(){super();}publicvoidgeraRel()throwsSQLException,JRException{super.rs=super.stm.executeQuery("SELECT * FROM fn_class_grupo");JRResultSetDataSourcejrs=newJRResultSetDataSource(rs);HashMapmap=newHashMap();JasperPrintimprimeRel=JasperFillManager.fillReport("Relatorio.jasper",map,jrs);JasperExportManager.exportReportToPdfFile(imprimeRel,"Arquivo");JasperViewerview=newJasperViewer(imprimeRel,true);view.setVisible(true);}}
Seja mais claro no seu problema, para que alguem possa tentar ajuda-lo…
Att. Jonas
G
guisantogui
Assim, eu consigo criar um relatório, mas naum sei como chamá-lo!
E também queria saber se posso criar na hora que executar o evento do botão ou tenho q deixa-lo previamente criado!
vc nao adicionou a library do commons-logging ao projeto…
vai achar ele no diretorio do iReport… procura la que vc acha
G
guisantogui
Vou dar uma olhada!
G
guisantogui
eh o arquivo xalan.JAR ?
Tentei importando esse Xalan, mas naum deu!
G
guisantogui
Amigo encontrei o .JAR, mas ele ta pedindo outro que naum to achando aque!
o nome eh ReferenceMap
T
TheKill
nao existe isso.
o jar nao é xalan. eu falei commons-logging,
vc ta esquecendo de adicionar os jars padrões do iReport…
da uma olhada ai no forum, já passei algumas vezes a lista…
G
guisantogui
Acho q importei tudo q é necessário, mas agora deu um problema que ele naum ta encontrando uma coluna da minha tabela, será q eh no relatório ou no BD?
se existe, no relatório existe um field chamado grupo?
bom é isso, agora preciso trabalhar… boa sorte
G
guisantogui
Vlw pela força TheKill vou continuar pesquisando aqui!
G
guisantogui
Vlw mesmo TheKill consegui puxar um relatório já criado quando executei o programa!
Agora vou ver se consigo criar o relatório no braço, tipo, não deixar ele pronto e chamar na hora entende! Se souberem algo que possa me ajudar com isso, seria legal
Seguinte, pq no iReport tu vai indo nas etapas que ele te diz:
“agora escolha o layout”
“Agora escolha as tabelas”
“Agora defina grupos de ordenação”
entende, como vou fazer isso na mão?
Por isso perguntei se também naum tem como eu embutir contas no relatório que dai eu forçaria ele a manter os dados atualizados sempre!
T
TheKill
esquece isso.
faça um relatorio em branco…
e coloque apenas os campos que vc quer que apareça…
e pronto, joga as informações do sistema para o relatório e tudo feito ;D
se não é isso, nao entendi. olha os exemplo mano… tem muita coisa no fórum
G
guisantogui
Talvez não tenha entendido é mais ou menos assim, tem alguns relatórios onde os campos serão resultados de formulas matematicas entende! Como eu irei fazer dai, e mais uma coisa, tipo quando eu crio o iReport ele pede uma Query dae eu faço la "SELECT … " tipo esses dados virão sempre atualizados ou seja o “SELECT” q eu mandei qdo criei o iReport não vai puxar os dados, criar o relatório e quando eu atualizar o banco não atualizar o relatório?
Desculpe se estou sendo meio confuso!
vlw pela força!
T
TheKill
amigo, ja falei…
nao coloca nada de sql no relatório,
faz oque tive de sql no sistema e envia para o relatório
o resultSet populado… e essas formulas matematicas pode passar
através de HashMap para o relatório.
Esqueça as Query do relatório.
Faça um relatório em branco
G
guisantogui
Humm, vou tentar fazer assim
Acho q entendi!
G
guisantogui
Mais uma duvida, como eu vou organizar o relatório se eu soh jogar o ResultSet la dentro?
T
TheKill
vc tem que criar os fields no relatório…
os fields que contem no seu resultSet…
veja bem estou falando de Fields…
E se for passar alguma formula matematica…
pode passar por hashMap…
isso eh feito com Parameter
G
guisantogui
Bah amigo fritei aqui! e jah ta cuase acabando meu expediente, amanha vou pensar nisso, mas de ql qr forma vlw pela ajuda!
Amanha volto pra guerra!
vlw
T
TheKill
Amigo,
veja o exemplo em anexo.
isso deve ser oque deve conter no seu relatorio iReport.
nada de querys SQL, nada.
G
guisantogui
Acho q te entendi amigo, eu tenho q colocar os campos referentes aos nomes das colunas no iReport Isso?
Vou tentar fazer um assim!
G
guisantogui
No caso a busca nos dados ao banco seria feita atraves do ResultSet passado quando se instancia um JRResultSetDataSource, mais ou menos assim?
rs=stm.executeQuery("SELECT grupo, descricao, criterio, classificacao FROM fn_grupo");JRResultSetDataSourcejrs=newJRResultSetDataSource(rs);
mas ele gera a exeção JRValidationException, acho que porque os campos que eu coloquei no aquivo jrxml não são encontrados.
arquivo:
T
TheKill
nao use o arquivo jasper
JasperPrint imprimeRel = JasperFillManager.fillReport(“Relatoriotst.jasper”, null, jrs);
use o arquivo .jrxml
G
guisantogui
Amigo tentei isso mas ele ta gerando esse erro:
net.sf.jasperreports.engine.JRException: Error loading object from file : D:\Pisom\JAVA-projetos\GRÁFICA\Projeto\Grafica\src\Testes\Relatoriotst.jrxml
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:101)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:536)
at Testes.ChamaRel.geraRel(ChamaRel.java:21)
at Classes.Main.main(Main.java:24)
Caused by: java.io.StreamCorruptedException: invalid stream header: 3C3F786D
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:783)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:96)
... 3 more
PS.: o endereço do arquivo .jrxml ta correto!
G
guisantogui
Tipo se eu coloco o arquivo .jasper ele roda, mas volta um relatório todo em branco!
G
guisantogui
Agradeço a ajuda do TheKill q me ajudou muito e me proporcionou a colocar mais uma TAG [RESOLVIDO] no guj!