Relatório só funciona no preview!

Pelo amor de Deus!!! :slight_smile:

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.

Repetindo, no preview tudo rola normalmente.

a query do preview é a mesma da aplicação?
se for uma query feita no sistema, testa ela para ver se está realmente retornando este campo

ou você só está passando a conexão, e usando a query que está no report mesmo?

Esta é a query do iReport.

SELECT
     processo.`numProcesso` AS numProcesso,
     acao.`acao` AS acao,
     objeto.`descricao` AS descricao,
     orgao.`descricao` AS descricao,
     vara.`vara` AS vara,
     requerente.`nome` AS nome,
     requerido.`razaoSocial` AS razaoSocial,
     andamento.`dataAndamento` AS dataAndamento,
     andamento.`andamento` AS andamento,
     processo.`situacao` AS situacao,
     acao.`codAcao` AS acao_codAcao,
     orgao.`codOrgao` AS orgao_codOrgao,
     vara.`codVara` AS vara_codVara,
     objeto.`codObjeto` AS objeto_codObjeto,
     processo.`codVara` AS processo_codVara,
     processo.`codObjeto` AS processo_codObjeto,
     processo.`codOrgao` AS processo_codOrgao,
     processo.`codAcao` AS processo_codAcao,
     processo.`observacao` AS processo_observacao,
     processo.`dt_cadastro` AS processo_dt_cadastro,
     ligacao_processo_requerido.`numProcesso` AS ligacao_processo_requerido_numProcesso,
     ligacao_processo_requerido.`cnpjRequerido` AS ligacao_processo_requerido_cnpjRequerido,
     ligacao_processo_requerente.`numProcesso` AS ligacao_processo_requerente_numProcesso,
     ligacao_processo_requerente.`cpfRequerente` AS ligacao_processo_requerente_cpfRequerente,
     andamento.`numProcesso` AS andamento_numProcesso
FROM
     `acao` acao INNER JOIN `processo` processo ON acao.`codAcao` = processo.`codAcao`
     INNER JOIN `objeto` objeto ON processo.`codObjeto` = objeto.`codObjeto`
     INNER JOIN `orgao` orgao ON processo.`codOrgao` = orgao.`codOrgao`
     INNER JOIN `vara` vara ON processo.`codVara` = vara.`codVara`
     INNER JOIN `ligacao_processo_requerente` ligacao_processo_requerente ON processo.`numProcesso` = ligacao_processo_requerente.`numProcesso`
     INNER JOIN `ligacao_processo_requerido` ligacao_processo_requerido ON processo.`numProcesso` = ligacao_processo_requerido.`numProcesso`
     INNER JOIN `andamento` andamento ON processo.`numProcesso` = andamento.`numProcesso`
     INNER JOIN `requerido` requerido ON ligacao_processo_requerido.`cnpjRequerido` = requerido.`cnpj`
     INNER JOIN `requerente` requerente ON ligacao_processo_requerente.`cpfRequerente` = requerente.`cpf`

E esta é a Classe que executa o Relatório.

import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;



public class RelatorioProcesso {

String codigo, situacao;
Conexao conecta = new Conexao();
    
    
public RelatorioProcesso(String codigo)
   {
     try
        {
          conecta.conecta();
          conecta.executeSQL("select * from processo where numProcesso ="+codigo);
          JRResultSetDataSource jrRs= new JRResultSetDataSource(conecta.resultset) ;
          JasperPrint relatorio = JasperFillManager.fillReport(
          "C:/Sistema Dorival/relatorios/relatorioProcesso.jasper",
          new HashMap(),jrRs);
          JasperViewer.viewReport(relatorio,false);
         }
     catch(Exception erro)
       {
        JOptionPane.showMessageDialog(null,"Erro ao Exibir Relatório"+ erro);
        erro.printStackTrace();
       }
   }

    void setVisible(boolean b) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
    
    
    
    
    
}

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

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.

Faz o seguinte ao inves de passar o JRResultSet, passa a conexão e verifica se funciona

[code]import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioProcesso {

String codigo, situacao;
Conexao conecta = new Conexao();

public RelatorioProcesso(String codigo)
{
try
{
conecta.conecta();
conecta.executeSQL(“select * from processo where numProcesso =”+codigo);
JRResultSetDataSource jrRs= new JRResultSetDataSource(conecta) ; //<<<<<<<<<<<<<<<<<<<<<<<<<<<<aqui é só deixar a conexão
JasperPrint relatorio = JasperFillManager.fillReport(
“C:/Sistema Dorival/relatorios/relatorioProcesso.jasper”,
new HashMap(),jrRs);
JasperViewer.viewReport(relatorio,false);
}
catch(Exception erro)
{
JOptionPane.showMessageDialog(null,“Erro ao Exibir Relatório”+ erro);
erro.printStackTrace();
}
}

void setVisible(boolean b) {  
    throw new UnsupportedOperationException("Not yet implemented");  
}  

} [/code]

foi mal é aqui

[code]import java.util.HashMap;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

public class RelatorioProcesso {

String codigo, situacao;
Conexao conecta = new Conexao();

public RelatorioProcesso(String codigo)
{
try
{
conecta.conecta();
conecta.executeSQL(“select * from processo where numProcesso =”+codigo);
JRResultSetDataSource jrRs= new JRResultSetDataSource(conecta.resultset) ;
JasperPrint relatorio = JasperFillManager.fillReport(
“C:/Sistema Dorival/relatorios/relatorioProcesso.jasper”,
new HashMap(),conecta); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<é aqui
JasperViewer.viewReport(relatorio,false);
}
catch(Exception erro)
{
JOptionPane.showMessageDialog(null,“Erro ao Exibir Relatório”+ erro);
erro.printStackTrace();
}
}

void setVisible(boolean b) {    
    throw new UnsupportedOperationException("Not yet implemented");    
}    

} [/code]

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