Criei um relatorio no ireport, mas não sei como especificar o caminho
publicvoidgerarRelatorioAlunos(Stringlayout)throwsJRException,ClassNotFoundException,SQLException{JasperDesigndesenho=JRXmlLoader.load(layout);JasperReportrelatorio=JasperCompileManager.compileReport(desenho);Connectioncon=conexao.pegarConexao();Statementstm=con.createStatement();Stringquery="select * from aluno";ResultSetrs=stm.executeQuery(query);JRResultSetDataSourcejrRS=newJRResultSetDataSource(rs);Mapparametros=newHashMap();JasperPrintimpressao=JasperFillManager.fillReport(relatorio,parametros,jrRS);JasperViewerviewer=newJasperViewer(impressao,true);viewer.show();}
[color=darkblue]Sei que o seu projeto é Desktop, mas é melhor por enquanto você nem colocar na src, coloca realmente na raiz do projeto, exemplo seu projeto ProjectIReport, coloca nessa pasta e roda como \jasper.jrxml, dai acredito que funcione, de qualquer forma tem esse tópico para ajudar : [/color]
Se precisar exportar o relatório direto para algum arquivo em PDF XLS ou algum outro formato olhe a classe JasperExportManager.exportReportToxxxxFie().
Ronaldo
D
Daianne
Obrigada, apareceu, :lol:
Mais uma perguntinha, eu posso usar esse método para que o usuario insira as informações no relatorio?
O que teria de mudar?
abraços!
R
rrigoni
Explique esta parte " Que o usuário insira as informações no relatório" seriam alguma personalização?
Se for algum dado em expec´ifico para cada usuário vc pode soliticar esta informação antes de gerar o relatório, e passar como parâmetro no map.
Explique melhor oq precisa para que possamos ajudar.
Ronaldo
D
Daianne
É um relatorio de alunos, e quero que o usuario,
possa inserir os dados do aluno, como o nome, por exemplo.
R
rrigoni
Ok,
Mas estes dados não vem da sua base de dados?
Não, não será possível inserir dados sem gerar o relatorio novamente, tendo em vista que o datasource é carregado antes do preenchimento do relatório.
Sugiro então vc exportar este relatório para xls e assim o usuário preencher os dados restantes.
Ronaldo.
D
Daianne
Ta gerando o relatorio normalmente, mas não mostra os alunos cadastrados, vc sabe porque?
R
rrigoni
Você configurou uma query que retorna dados na criação do seu .jasper?
Execute esta query diretamente em banco, pois os dados do relatório é preenchido com o datasource.
Ronaldo
D
Daianne
Fiz dessa forma mas não ta dando certo
publicJasperPrintgerarRelatorioAlunosExibir()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();Statementstm=con.createStatement();Stringpath="RelatorioAlunos.jasper";Stringquery="select * from aluno";ResultSetrs=stm.executeQuery(query);JRResultSetDataSourcejrRS=newJRResultSetDataSource(rs);HashMapmap=newHashMap();InputStreaminput=this.getClass().getClassLoader().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,jrRS);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;
net.sf.jasperreports.engine.JRException: Unknown column name : aluno_codigo
at net.sf.jasperreports.engine.JRResultSetDataSource.getColumnIndex(JRResultSetDataSource.java:359)
at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:116)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:787)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:751)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1422)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:801)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:582)
at autoescola.modelo.GerarRelatorios.gerarRelatorioAlunosExibir(GerarRelatorios.java:127)
at autoescola.modelo.GerarRelatorios.main(GerarRelatorios.java:98)
R
rrigoni
Na sua query quando vc gera o relatorio pelo Ireport, repare que os nomes do resultset nome_aluno deve ser os mesmos nomes q em seu relatório.
Recomento vc usar um wizard do ireport pra entender.
Ronaldo
M
Metaleiro
Daianne:
Fiz dessa forma mas não ta dando certo
net.sf.jasperreports.engine.JRException: Unknown column name : aluno_codigo
at net.sf.jasperreports.engine.JRResultSetDataSource.getColumnIndex(JRResultSetDataSource.java:359)
at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:116)
at net.sf.jasperreports.engine.fill.JRFillDataset.setOldValues(JRFillDataset.java:787)
at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:751)
at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1422)
at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:111)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:879)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:801)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:89)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:601)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:582)
at autoescola.modelo.GerarRelatorios.gerarRelatorioAlunosExibir(GerarRelatorios.java:127)
at autoescola.modelo.GerarRelatorios.main(GerarRelatorios.java:98)
[color=darkblue]Ou não está retornando o campo aluno_codigo por não tê-lo em sua base ou ele pode estar com outro nome, mas de qualquer forma tem que ver se o campo Field no .jasper está com esse nome e esse campo está obtendo retorno [/color]
D
Daianne
Não to conseguindo, Alguém poderia me mostrar um exemplo?
publicclassGerarRelatoriosextendsException{publicGerarRelatorios(){}publicJasperPrintgerarRelatorioAlunos()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();HashMapmap=newHashMap();Stringpath="/Relatorios/Alunos.jasper";InputStreaminput=this.getClass().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,con);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatorioDeTurmas()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();HashMapmap=newHashMap();Stringpath="/Relatorios/Turmas.jasper";InputStreaminput=this.getClass().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,con);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatorioAlunosExibir()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();Statementstm=con.createStatement();Stringpath="Alunos.jasper";Stringquery="Select * FROM aluno WHERE aluno=$P{aluno}";ResultSetrs=stm.executeQuery(query);JRResultSetDataSourcejrRS=newJRResultSetDataSource(rs);HashMapmap=newHashMap();InputStreaminput=this.getClass().getClassLoader().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,jrRS);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatoriosAlunosPorCodigo(intcodigo)throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();Stringpath="src/Relatorios/Alunos.jasper";InputStreaminput=this.getClass().getClassLoader().getResourceAsStream(path);Stringquery="select * from aluno where codigo="+codigo;Statements=conexao.pegarConexao().createStatement();ResultSetrs=s.executeQuery(query);JRResultSetDataSourcetst=newJRResultSetDataSource(rs);HashMapmap=newHashMap();map.put("QUERY",con);rel=JasperFillManager.fillReport(input,map,tst);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicStringwritingFile(StringBufferstrBuff,Stringpath)throwsIOException{StringfName=System.currentTimeMillis()+".csv";try{BufferedWriterout=newBufferedWriter(newFileWriter(path+fName));out.write(strBuff.toString());out.close();}catch(IOExceptione){}returnfName;}publicstaticvoidmain(String[]args){try{newGerarRelatorios().gerarRelatorioAlunos();}catch(Exceptionex){Logger.getLogger(GerarRelatorios.class.getName()).log(Level.SEVERE,null,ex);}}}
R
ronaldosilva937
Olá tenho um problema pra executar um relatório, ele chama o Jasper Viewer mas não mostra o relatório
exibe este erro net.sf.jasperreports.engine.JRException: java.io.FileNotFoundException: Livros.jasper
se alguém poder me dar uma ajuda ou me passa alguns tutoriais.
Problema solucionado.
Havia dois tipos de problema não estava conseguindo encontrar o arquivo e o outro erra as versões das libs, a estrutura
do relatório é gerada com ireport 3.7.2
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageireportexample02;importjava.io.File;importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.SQLException;importjava.util.HashMap;importjava.util.Map;importnet.sf.jasperreports.engine.JRException;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.view.JasperViewer;/** * * @author ronaldosil */publicclassReportEaxample02{privatestaticConnectiongetConnection()throwsSQLException,ClassNotFoundException{Stringdriver="com.mysql.jdbc.Driver";Stringurl="jdbc:mysql://localhost:3306/relatorios";Stringuser="root";Stringpwd="unifeg";Class.forName(driver);Connectioncon=DriverManager.getConnection(url,user,pwd);returncon;}publicvoidgerarReportExample02()throwsSQLException,ClassNotFoundException{Connectioncon=getConnection();Mapparameters=newHashMap();//Arquivo .jasper foi colocado no mesmo pacote da classStringpath=("src/ireportexample02/Livros.jasper");Filefile=newFile(path);file=file.getAbsoluteFile();StringrepStr2=file.getPath();try{JasperFillManager.fillReportToFile(repStr2,parameters,con);JasperPrintjasperPrint=JasperFillManager.fillReport(repStr2,parameters,con);JasperViewerviewer=newJasperViewer(jasperPrint,false);viewer.setVisible(true);}catch(JRExceptionjex){System.out.print("JasperException"+jex.getMessage());}catch(Exceptionex){System.out.print("-"+ex.getMessage());}}}
K
Kleber-rr
Daianne:
publicclassGerarRelatoriosextendsException{publicGerarRelatorios(){}publicJasperPrintgerarRelatorioAlunos()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();HashMapmap=newHashMap();Stringpath="/Relatorios/Alunos.jasper";InputStreaminput=this.getClass().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,con);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatorioDeTurmas()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();HashMapmap=newHashMap();Stringpath="/Relatorios/Turmas.jasper";InputStreaminput=this.getClass().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,con);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatorioAlunosExibir()throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();Statementstm=con.createStatement();Stringpath="Alunos.jasper";Stringquery="Select * FROM aluno WHERE aluno=$P{aluno}";ResultSetrs=stm.executeQuery(query);JRResultSetDataSourcejrRS=newJRResultSetDataSource(rs);HashMapmap=newHashMap();InputStreaminput=this.getClass().getClassLoader().getResourceAsStream(path);rel=JasperFillManager.fillReport(input,map,jrRS);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicJasperPrintgerarRelatoriosAlunosPorCodigo(intcodigo)throwsException{JasperPrintrel=null;try{Connectioncon=conexao.pegarConexao();Stringpath="src/Relatorios/Alunos.jasper";InputStreaminput=this.getClass().getClassLoader().getResourceAsStream(path);Stringquery="select * from aluno where codigo="+codigo;Statements=conexao.pegarConexao().createStatement();ResultSetrs=s.executeQuery(query);JRResultSetDataSourcetst=newJRResultSetDataSource(rs);HashMapmap=newHashMap();map.put("QUERY",con);rel=JasperFillManager.fillReport(input,map,tst);JasperViewer.viewReport(rel,false);}catch(JRExceptione){e.printStackTrace();}returnrel;}publicStringwritingFile(StringBufferstrBuff,Stringpath)throwsIOException{StringfName=System.currentTimeMillis()+".csv";try{BufferedWriterout=newBufferedWriter(newFileWriter(path+fName));out.write(strBuff.toString());out.close();}catch(IOExceptione){}returnfName;}publicstaticvoidmain(String[]args){try{newGerarRelatorios().gerarRelatorioAlunos();}catch(Exceptionex){Logger.getLogger(GerarRelatorios.class.getName()).log(Level.SEVERE,null,ex);}}}
Oi Daianne, td bem?
Como ficou na tua jsp?? a chamada do teu método:gerarRelatoriosAlunosPorCodigo(int codigo)???
Aguardo.