Gerando relatorios

0 respostas
R

Fala ae pessoal, blz?
Bom eh o seguinte: desenvolvi uma aplicação que está mostrando os relatórios que foram desenvolvidos no iReport. Entretanto, não estou conseguindo mostrar um. Já modifiquei o SELECT, mas ate agora nada.
Este é o código da aplicação:

import net.sf.jasperreports.engine.*;

import net.sf.jasperreports.view.*; 


import java.sql.*;

import java.util.*; 


import javax.swing.JOptionPane; 
 


public class teste_sistema{

      private static final String driver ="sun.jdbc.odbc.JdbcOdbcDriver";

      private static final String url ="jdbc:odbc:nome_da_fonte_de_dados"; 
 


      public static void main (String args[])throws Exception{ 


            char escolha;

            StringBuilder st = new StringBuilder();

            st.append("Digite:");

            st.append("\n1 - Todos os funcionários");

            st.append("\n2 - Funcionários Aposentados");

            st.append("\n3 - Funcionários Desligados");

            st.append("\n4 - Funcionários Novos");

            st.append("\n5 - Alterações"); 


            String a = JOptionPane.showInputDialog(null,st);

            escolha = a.charAt(0);

            switch(escolha)

            {

            case '1':

                  try{

                        Class.forName(driver);

                        Connection conn = DriverManager.getConnection(url);

                        Statement stm = conn.createStatement( );

                        String query = "SELECT MATRICULAN, NOME, CARGO, LOTACAO FROM Empregados ORDER BY LOTACAO";

                        ResultSet rs = stm.executeQuery( query );

                        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

                        HashMap parameters = new HashMap(); 


                        /* Preenche o relatório com os dados. Gera o arquivo rel_todos_funcionarios.jrprint */

                        JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_todos_funcionarios.jasper", parameters, jrRS);

                        /* Exporta para o formato PDF */

                        JasperExportManager.exportReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_todos_funcionarios.jrprint");

                        /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */

                        JasperRunManager.runReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_todos_funcionarios.jasper", parameters, jrRS);

                        /* Visualiza o relatório em formato PDF */

                        JasperViewer.viewReport("C:/bin/eclipse/plugins/iReport-0.4.1/rel_todos_funcionarios.jrprint", false);

                  }

                  catch(SQLException sqlex){sqlex.printStackTrace();}

                  break;

            case '2':

            try{

                  Class.forName(driver);

                  Connection conn = DriverManager.getConnection(url);

                  Statement stm = conn.createStatement( );

                  String query = "SELECT MATRICULAN, NOME, CARGO, LOTACAO FROM Empregados WHERE LOTACAO = 'Aposentado' ORDER BY NOME";

                  ResultSet rs = stm.executeQuery( query );

                  JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

                  HashMap parameters = new HashMap(); 


                  /* Preenche o relatório com os dados. Gera o arquivo rel_funcionarios_aposentados.jrprint */

                  JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_aposentados.jasper", parameters, jrRS);

                  /* Exporta para o formato PDF */

                  JasperExportManager.exportReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_aposentados.jrprint");

                  /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */

                  JasperRunManager.runReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_aposentados.jasper", parameters, jrRS);

                  /* Visualiza o relatório em formato PDF */

                  JasperViewer.viewReport("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_aposentados.jrprint", false);

            }

            catch(SQLException sqlex){sqlex.printStackTrace();}

            break;

            case '3':

                  try{

                        Class.forName(driver);

                        Connection conn = DriverManager.getConnection(url);

                        Statement stm = conn.createStatement( );

                        String query = "SELECT MATRICULAN, NOME, CARGO, LOTACAO FROM Empregados WHERE LOTACAO = 'Desligado' ORDER BY NOME";

                        ResultSet rs = stm.executeQuery( query );

                        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

                        HashMap parameters = new HashMap(); 


                        /* Preenche o relatório com os dados. Gera o arquivo rel_funcionarios_desligados.jrprint */

                        JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_desligados.jasper", parameters, jrRS);

                        /* Exporta para o formato PDF */

                        JasperExportManager.exportReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_desligados.jrprint");

                        /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */

                        JasperRunManager.runReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_desligados.jasper", parameters, jrRS);

                        /* Visualiza o relatório em formato PDF */

                        JasperViewer.viewReport("C:/bin/eclipse/plugins/iReport-0.4.1/rel_funcionarios_desligados.jrprint", false);

                  }

                  catch(SQLException sqlex){sqlex.printStackTrace();}

                  break;

            case '4':

                  try{

                        Class.forName(driver);

                        Connection conn = DriverManager.getConnection(url);

                        Statement stm = conn.createStatement( );

                        String query = "SELECT MATRICULAN, NOME, CARGO, LOTACAO FROM ConsultNovoFuncionario ORDER BY NOME";

                        ResultSet rs = stm.executeQuery( query );

                        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

                        HashMap parameters = new HashMap(); 


                        /* Preenche o relatório com os dados. Gera o arquivo rel_novos_funcionarios.jrprint */

                        JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_novos_funcionarios.jasper", parameters, jrRS);

                        /* Exporta para o formato PDF */

                        JasperExportManager.exportReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_novos_funcionarios.jrprint");

                        /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */

                        JasperRunManager.runReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_novos_funcionarios.jasper", parameters, jrRS);

                        /* Visualiza o relatório em formato PDF */

                        JasperViewer.viewReport("C:/bin/eclipse/plugins/iReport-0.4.1/rel_novos_funcionarios.jrprint", false);

                  }

                  catch(SQLException sqlex){sqlex.printStackTrace();}

                  break;

            case '5':

                  try{

                        Class.forName(driver);

                        Connection conn = DriverManager.getConnection(url);

                        Statement stm = conn.createStatement( );

                        String query = "SELECT Empregados.MATRICULAN, Empregados.NOME, Empregados.CARGO, Empregados.FUNCAOC, Empregados.LOTACAO, Empregados.ANDAR, Empregados.SALA, Empregados.AREA, EmpregadosAntigo.NOME, EmpregadosAntigo.CARGO, EmpregadosAntigo.FUNCAOC, EmpregadosAntigo.LOTACAO, EmpregadosAntigo.ANDAR, EmpregadosAntigo.SALA, EmpregadosAntigo.AREA , IIf(Empregados.NOME<>EmpregadosAntigo.NOME,'SIM') AS 'NOME', IIf(Empregados.CARGO<>EmpregadosAntigo.CARGO,'SIM') AS 'CARGO', IIf(Empregados.FUNCAOC<>EmpregadosAntigo.FUNCAOC,'SIM') AS 'FUNÇAO', IIf(Empregados.LOTACAO<>EmpregadosAntigo.LOTACAO,'SIM') AS 'LOTACAO', IIf(Empregados.ANDAR<>EmpregadosAntigo.ANDAR,'SIM') AS 'ANDAR', IIf(Empregados.SALA<>EmpregadosAntigo.SALA,'SIM') AS 'SALA', IIf(Empregados.AREA<>EmpregadosAntigo.AREA,'SIM') AS 'AREA' FROM ConsultFuncionario ORDER BY Empregados.FUNCAOC";

                        ResultSet rs = stm.executeQuery( query );

                        JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

                        HashMap parameters = new HashMap(); 


                        /* Preenche o relatório com os dados. Gera o arquivo rel_alteracoes_funcoes.jrprint */

                        JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_alteracoes_funcoes.jasper", parameters, jrRS);

                        /* Exporta para o formato PDF */

                        JasperExportManager.exportReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_alteracoes_funcoes.jrprint");

                        /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem a necessidade do .jrprint */

                        JasperRunManager.runReportToPdfFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_alteracoes_funcoes.jasper", parameters, jrRS);

                        /* Visualiza o relatório em formato PDF */

                        JasperViewer.viewReport("C:/bin/eclipse/plugins/iReport-0.4.1/rel_alteracoes_funcoes.jrprint", false);

                  }

                  catch(SQLException sqlex){sqlex.printStackTrace();}

                  break;

            default:

                  String Erro = "Valor inexistente";

                  JOptionPane.showMessageDialog(null,Erro,"Erro",1);

                  System.exit(0);

            }

      }

}

E o erro que está apresentando eh o seguinte:

Exception in thread "main" java.sql.SQLException: Column not found

      at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(Unknown Source)

      at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)

      at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:270)

      at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:890)

      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:160)

      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:691)

      at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:160)

      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:472)

      at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:363)

      at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:319)

      at teste_sistema.main(teste_sistema.java:125) 


NESTED BY :

net.sf.jasperreports.engine.JRException: Unable to get value for field 'Matricula' of class 'java.lang.String'

      at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:279)

      at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:890)

      at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:160)

      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:691)

      at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:160)

      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:472)

      at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:363)

      at net.sf.jasperreports.engine.JasperFillManager.fillReportToFile(JasperFillManager.java:319)

      at teste_sistema.main(teste_sistema.java:125)

Caused by: java.sql.SQLException: Column not found

      at sun.jdbc.odbc.JdbcOdbcResultSet.findColumn(Unknown Source)

      at sun.jdbc.odbc.JdbcOdbcResultSet.getString(Unknown Source)

      at net.sf.jasperreports.engine.JRResultSetDataSource.getFieldValue(JRResultSetDataSource.java:270)

      ... 8 more

A linha 125 que o erro faz referência eh essa:

JasperFillManager.fillReportToFile("C:/bin/eclipse/plugins/iReport-0.4.1/rel_alteracoes_funcoes.jasper", parameters, jrRS);

O que eu devo fazer, pessoal?
Obrigado.
Abs

Rodrigo

Criado 27 de maio de 2008
Respostas 0
Participantes 1