Exibir um relatorio atraves do jButton

12 respostas
W

Bem gente to com o seguinte problema

Relatorio v = (Relatorio) jRelcodemp.getText();
  required: Relatorio
  found:    String

Ele usara um campo de texto para pegar o codigo!

E está dando esse erro!

12 Respostas

fabiocortolan

O problema é q vc está tentando fazer um cast de uma String para uma classe Relatorio, isso não será possível. Vc não tem nenhum código na classe Relatorio que sete o código do relatório?

W

Na minha classe relatório só tem os métodos getter and setter

public class Relatorio{


    private Integer id_cadastro;
    private String razao;

    public Relatorio(Integer id_cadastro, String razao) {
        this.id_cadastro = id_cadastro;
        this.razao = razao;
    }

    public Integer getId_cadastro() {
        return id_cadastro;
    }

    public void setId_cadastro(Integer id_cadastro) {
        this.id_cadastro = id_cadastro;
    }

    public String getRazao() {
        return razao;
    }

    public void setRazao(String razao) {
        this.razao = razao;
    }



}
O que poderia estar errado?
fabiocortolan

Vc não entendeu, o q eu disse é q vc está tentando converter uma String com o método “jRelcodemp.getText()” para uma classe Relatorio

Relatorio v = (Relatorio) jRelcodemp.getText(); // Vc está fazendo o cast de String para Relatorio, não vai funcionar

Se o que vc quer fazer é atribuir o valor do campo jRelcodemp ao campo id_cadastro da classe relatório faça o seguinte:

Relatorio v = new Relatorio(); // cria uma instância da classe Relatorio
v.setId_cadastro(Integer.parseInt(jRelcodemp.getText())); // faz o cast para Integer e atribui a variável id_cadastro da classe Relatorio

Uma dica, por definição variáveis em Java são nomeadas com camelcase, no caso da sua variável id_cadastro, ficaria melhor se vc nomeasse como idCadastro. Não é obrigatório mas é aconselhável.
Tem um artigo interessante que fala sobre isso no link abaixo, se te interessar:
http://java.about.com/od/javasyntax/a/nameconventions.htm

W

O que eu quero fazer e pegar o valor do campo jRelcodemp para poder ser o parametro para o relatorio!
Quase igual as consultas que eu utilizei nesse projeto. Porém esta dando esse erro!

fabiocortolan

William Rodrigues Vieira:
O que eu quero fazer e pegar o valor do campo jRelcodemp para poder ser o parametro para o relatorio!
Quase igual as consultas que eu utilizei nesse projeto. Porém esta dando esse erro!

Como eu já disse nos posts anteriores, vc não vai conseguir converter uma String em um objeto Relatorio, onde vc quer inserir o valor da variável jRelcodemp? Se for na variável id_cadastro é exatamente como expliquei.

W

Agora o erro que esta dando e esse!

run:
Jul 03, 2013 12:31:43 PM honorarios.HonorariosView jRelsalvarActionPerformed
SEVERE: null
java.lang.UnsupportedOperationException: Not yet implemented
        at Modelo.Relatorio.<init>(Relatorio.java:24)
        at honorarios.HonorariosView.jRelsalvarActionPerformed(HonorariosView.java:2297)
        at honorarios.HonorariosView.access$3700(HonorariosView.java:45)
        at honorarios.HonorariosView$32.actionPerformed(HonorariosView.java:1830)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:682)
        at java.awt.EventQueue$3.run(EventQueue.java:680)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:696)
        at java.awt.EventQueue$4.run(EventQueue.java:694)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

CONSTRUÍDO COM SUCESSO (tempo total: 4 minutos 19 segundos)
fabiocortolan

Posta o código do botão q vc está acionando qdo aparece o erro.

W
private void jRelsalvarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jRelsalvarActionPerformed
        

        try {
            Relatorio v = new Relatorio();
            // cria uma instância da classe Relatorio
            v.setId_cadastro(Integer.parseInt(jRelcodemp.getText()));
            // faz o cast para Integer e atribui a variável id_cadastro da classe Relatorio
            
            chamaRelatorio visualizarRel = new chamaRelatorio();
            visualizarRel.visualizar(v.getId_cadastro());
        } catch (Exception ex) {
            Logger.getLogger(HonorariosView.class.getName()).log(Level.SEVERE, null, ex);
        }

Esse e o codigo do ActionPerformed do botao para gerar o relatorio!

fabiocortolan

Posta o código da classe chamaRelatorio, se não estou enganado o erro está na implementação do método “visualizar()”.

W
public class chamaRelatorio {


    private Connection conn;
    public chamaRelatorio( ) throws Exception{
        try {
            this.conn = (Connection) ConectaBanco.getConnection( );
        } catch( Exception e ) {
            throw new Exception( "Erro: \n" + e.getMessage( ) );
        }



    }

   public void visualizar(Integer id_cadastro){

        try{
        
            HashMap parameterMap = new HashMap<String, Integer>();
            //o Nome do par�¢metro e o valor �© passado ao HashMap
            parameterMap.put("COD_EMPRESA", id_cadastro);

            //caminho relativo do relat�³rio dentro do pacote
            String a = "Relatorios/clientesdiv.jasper";

            //l�ª o arquivo dentro do pacote
            //mecess�¡rio caso gere um JAR para distribuir
            InputStream in = this.getClass().getResourceAsStream(a);


            //chama fillReport 
            JasperPrint jp = JasperFillManager.fillReport(in, parameterMap, conn);

	    //exibe o relat�³rio com viewReport
	    JasperViewer.viewReport(jp, false);

		}catch (JRException e) {
            e.printStackTrace();
		} finally {
            try {
                if (!conn.isClosed()) {
                    conn.close();
                }
            } catch (SQLException ex) {}
		}

    }



}
Ai esta a classe chamaRelatorio().
fabiocortolan

O erro está em alguma parte do construtor da classe “chamaRelatorio” ou em “ConectaBanco.getConnection( )”, eu não consegui ver pelo erro q foi postado. Dá uma conferida no método getConnection e debuga a classe chamaRelatorio e ConectaBanco p/ descobrir onde exatamente a exceção está sendo lançada, desse jeito vai ficar mais fácil de encontrar o erro.

Uma dica, evite lançar exceções no construtor da classe, não é uma boa prática.

W
run:
Jul 11, 2013 8:32:45 PM honorarios.HonorariosView jRelsalvarActionPerformed
SEVERE: null
java.lang.NullPointerException
        at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2283)
        at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2296)
        at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2767)
        at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:798)
        at java.io.ObjectInputStream.<init>(ObjectInputStream.java:298)
        at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:58)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:244)
        at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:229)
        at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:405)
        at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:824)
        at util.chamaRelatorio.visualizar(chamaRelatorio.java:54)
        at honorarios.HonorariosView.jRelsalvarActionPerformed(HonorariosView.java:2301)
        at honorarios.HonorariosView.access$3700(HonorariosView.java:45)
        at honorarios.HonorariosView$32.actionPerformed(HonorariosView.java:1830)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
        at java.awt.Component.processMouseEvent(Component.java:6505)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)
        at java.awt.Component.processEvent(Component.java:6270)
        at java.awt.Container.processEvent(Container.java:2229)
        at java.awt.Component.dispatchEventImpl(Component.java:4861)
        at java.awt.Container.dispatchEventImpl(Container.java:2287)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
        at java.awt.Container.dispatchEventImpl(Container.java:2273)
        at java.awt.Window.dispatchEventImpl(Window.java:2719)
        at java.awt.Component.dispatchEvent(Component.java:4687)
        at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
        at java.awt.EventQueue.access$200(EventQueue.java:103)
        at java.awt.EventQueue$3.run(EventQueue.java:682)
        at java.awt.EventQueue$3.run(EventQueue.java:680)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
        at java.awt.EventQueue$4.run(EventQueue.java:696)
        at java.awt.EventQueue$4.run(EventQueue.java:694)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)

CONSTRUÍDO COM SUCESSO (tempo total: 26 segundos)
Esse e o novo erro que esta dando, tem a ver com o fillReport! Come resolver??
Criado 25 de junho de 2013
Ultima resposta 11 de jul. de 2013
Respostas 12
Participantes 2