Preparei um relatório que funciona normalmente no preview do iReport, porém, qdo executo o arquivo .jasper atraves do sistema
ele nao funciona e mostra uma mensagem dizendo que nao encontra alguns campos do banco de dados.
Alguem poderia me informar o que ocorre neste caso e como resolvê-lo???
Pelo que da pra perceber… pode ser a conexão ou os paramentros que vc ta enviando pro relatório… recentemente tive inúmeros problemascom o ireport, mas agora está tudo funcionando perfeitamente. Para lhe ajudar melhor seria bom vc enviar o erro junto com a sua classe que chama o relatório
1-> A query está fixa no relatório, pra estar funcionando no preview, certo? Se sim, porquê você está passando outra coleção de dados pro relatório? Tem algum motivo?
2-> Teu iReport e teu sistema estão conectados no mesmo banco?
3-> Pode haver um problema com alias no teu SQL
Eu aposto na número 1: você tá passando uma coleção pra ele, e essa coleção não possui o atributo acao.
Abraço!
É como o amigo Leoramos falou vc está passando uma novo query quando precisaria apenas da conexão
se o relatório já esta funcinando no preview é pq a query já esta funcionando portanto só precisa da conexão
este é a minha classe funcionando 100%
@author carlos.vitor
*/
public class RelAvs { @SuppressWarnings(“unchecked”)
//recebe o parametro para executar a query que existe no formulário.
public void gerarRelatorioAVS(int numAvs) throws Exception{
Connection conn = new Conexao().conectar();
String endRel = "C:/Documents and Settings/cvssouza/Modelos/Meus documentos/NetBeansProjects/UtilCea/src/br/com/relatorio/";
try {
//mapea os paramentros
Map parametros = new HashMap();
//"numAVS" é o nome do campo no relatório, numAvs é a variavel que vou enviar para o relatório
parametros.put("numAVS", numAvs);
//Preenche o formulário com os parametros e conexão
JasperFillManager.fillReportToFile( endRel+"AVS.jasper",endRel+"AVS.jrprint", parametros,conn);
//Exporta o arquivo para pdf
JasperExportManager.exportReportToPdfFile( endRel+"AVS.jrprint" ,"C:/pdf.pdf");
//Visualiza o documento
JasperViewer.viewReport(endRel+"AVS.jrprint" , false);
//Imprime o documento
JasperPrintManager.printReport(endRel+"AVS.jrprint", true);
} catch (JRException ex) {
System.out.print(ex);
JOptionPane.showMessageDialog(null,"Erro !","Mensagem",JOptionPane.INFORMATION_MESSAGE);
}
Vc ainda continua enviando um resultset no lugar de uma conexão
tenta isso
//Crie essa variavel antes do try
Connection conn = new Conexao().conectar();
//
Na linha 25 do seu código deveria ficar assim...
JasperPrint relatorio = JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper", conn);
Caso contrário tenta implementar com base no meu código
Bom eu fiz com os mesmo dasdos seus aqui e funcionou tudo certinho
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.relatorio;
import br.com.query.Conexao;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author Vitor
*/
public class RelatorioProcesso {
//variavel de conexão já tem q ir com a conexão feita e não sozinha como estava
//Conexao conn = new Conexao();
Connection conn = new Conexao().conecta();
public void RelatorioProcesso() throws Exception{
try {
Map parametros = new HashMap();
//Não nescessita pois vc já fez as querys todas no formulário
//JRResultSetDataSource jrRs= new JRResultSetDataSource(conecta.resultset) ;
//
JasperPrint relatorio = JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",parametros,conn);
JasperViewer.viewReport(relatorio,false);
} catch (JRException erro){
JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+ erro);
erro.printStackTrace();
}
}
//Este método é apenas para testar
public static void main(String args[]) throws Exception{
new RelatorioProcesso().RelatorioProcesso();
}
}
Caso o erro persista envie o erro e o código xml do seu formulário para eu ver sua a sua query
//import br.com.query.Conexao;
import java.sql.Connection;
import java.util.HashMap;
import java.util.Map;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;
/**
*
* @author Vitor
*/
public class RelatorioProcesso {
//variavel de conexão já tem q ir com a conexão feita e não sozinha como estava
//Conexao conn = new Conexao();
// NESTA LINHA AÍ EM BAIXO TUDO FICA SUBLINHADO EM VERMELHO E DIZ "TIPOS INCOMPATIVEIS" e sugere a troca so tipo da variavel conn para boolean.
Connection conn = new Conexao().conecta();
public void RelatorioProcesso() throws Exception{
try {
Map parametros = new HashMap();
//Não nescessita pois vc já fez as querys todas no formulário
//JRResultSetDataSource jrRs= new JRResultSetDataSource(conecta.resultset) ;
//
JasperPrint relatorio = JasperFillManager.fillReport("C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",parametros,conn);
JasperViewer.viewReport(relatorio,false);
} catch (JRException erro){
JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+ erro);
erro.printStackTrace();
}
}
//Este método é apenas para testar
public static void main(String args[]) throws Exception{
new RelatorioProcesso().RelatorioProcesso();
}
}