Caros amigos, tenho o seguinte problema aqui com um relatório.
Ele funciona normalmente no preview mas qdo tento executa-lo pelo sistema ele nao encontra os
campos que deve buscar apresentando a seguinte mensagem: "Unknown column name: acao ".
A titulo de informação caso isso altere alguma coisa, estou trabalhando neste relatorio com 5 tabelas
todas ligadas normalmente por chaves estrangeiras.
importjava.util.HashMap;importjavax.swing.JOptionPane;importnet.sf.jasperreports.engine.JRResultSetDataSource;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.view.JasperViewer;publicclassRelatorioProcesso{Stringcodigo,situacao;Conexaoconecta=newConexao();publicRelatorioProcesso(Stringcodigo){try{conecta.conecta();conecta.executeSQL("select * from processo where numProcesso ="+codigo);JRResultSetDataSourcejrRs=newJRResultSetDataSource(conecta.resultset);JasperPrintrelatorio=JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",newHashMap(),jrRs);JasperViewer.viewReport(relatorio,false);}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+erro);erro.printStackTrace();}}voidsetVisible(booleanb){thrownewUnsupportedOperationException("Not yet implemented");}}
D
danielpump
Se você for no sei gerenciador do banco e testar este comando
select * from processo limit 30
ele retorna o campo acao, para você?
acho que não aparece por que pelo que percebi do select do report você tem uma tabela acao, e no select que você faz na aplicação você só faz referencia a esta tabela processo
F
fbraga
Sim, retorna normalmente.
Me diz uma coisa, é necessario ter estas linhas na classe que executa o relatorio?
conecta.conecta();conecta.executeSQL("select * from Processo where numProcesso ="+codigo);
A coisa mais curiosa é que no iReport ta perfeito.
D
danielpump
Faz o seguinte ao inves de passar o JRResultSet, passa a conexão e verifica se funciona
importjava.util.HashMap;importjavax.swing.JOptionPane;importnet.sf.jasperreports.engine.JRResultSetDataSource;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.view.JasperViewer;publicclassRelatorioProcesso{Stringcodigo,situacao;Conexaoconecta=newConexao();publicRelatorioProcesso(Stringcodigo){try{conecta.conecta();conecta.executeSQL("select * from processo where numProcesso ="+codigo);JRResultSetDataSourcejrRs=newJRResultSetDataSource(conecta);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<aqui é só deixar a conexãoJasperPrintrelatorio=JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",newHashMap(),jrRs);JasperViewer.viewReport(relatorio,false);}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+erro);erro.printStackTrace();}}voidsetVisible(booleanb){thrownewUnsupportedOperationException("Not yet implemented");}}
D
danielpump
foi mal é aqui
importjava.util.HashMap;importjavax.swing.JOptionPane;importnet.sf.jasperreports.engine.JRResultSetDataSource;importnet.sf.jasperreports.engine.JasperFillManager;importnet.sf.jasperreports.engine.JasperPrint;importnet.sf.jasperreports.view.JasperViewer;publicclassRelatorioProcesso{Stringcodigo,situacao;Conexaoconecta=newConexao();publicRelatorioProcesso(Stringcodigo){try{conecta.conecta();conecta.executeSQL("select * from processo where numProcesso ="+codigo);JRResultSetDataSourcejrRs=newJRResultSetDataSource(conecta.resultset);JasperPrintrelatorio=JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",newHashMap(),conecta);//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<é aqui JasperViewer.viewReport(relatorio,false);}catch(Exceptionerro){JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+erro);erro.printStackTrace();}}voidsetVisible(booleanb){thrownewUnsupportedOperationException("Not yet implemented");}}
D
danielpump
no primeiro tinha colocado no lugar errado, é só colocar a conexão nos parametros do fillReport, ao inves do JRResultSet
Se ainda sim não der certo, posta a msg de erro inteira por favor