Dúvida

4 respostas
R

Fala pessoal, blz?
Bom eu to com uma dúvida. Eu desenvolvi uma aplicação q exibe os relatórios que foram feitos no iReport. Porém os dados que são mostrados nos relatórios veêm de um banco de dados no access q é diariamente atualizado. Se eu for mostrar os relatórios atualizados, tenho q gerar, manualmente, ou seja, compilar os relatórios todos os dias e salvá-los com extensão jrprint.
Gostaria que a partir do programa, já mostrasse os relatórios atualizados.
Uma outra dúvida minha é que não consigo gerar o executável dessa minha aplicação. O código e o erro estão abaixo:

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_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 MATRICULAN, Empregados.NOME as nome_atual, Empregados.CARGO as cargo_atual, Empregados.FUNCAOC as Funcao_atual, Empregados.LOTACAO as lotacao_atual, Empregados.ANDAR as andar_atual, Empregados.SALA as sala_atual, Empregados.AREA as area_atual, EmpregadosAntigo.NOME as nome_antigo, EmpregadosAntigo.CARGO as cargo_antigo, EmpregadosAntigo.FUNCAOC as funcao_antiga, EmpregadosAntigo.LOTACAO as lotacao_antiga, EmpregadosAntigo.ANDAR as andar_antigo, EmpregadosAntigo.SALA as sala_antiga, EmpregadosAntigo.AREA as area_antiga, IIf([Empregados].[NOME]<>[EmpregadosAntigo].[NOME],'SIM') as nome, IIf(Empregados.CARGO<>EmpregadosAntigo.CARGO,'SIM') as cargo, IIf(Empregados.FUNCAOC<>EmpregadosAntigo.FUNCAOC,'SIM') as funcao, 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 = "Relatório não existente";

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

                  System.exit(0);

            }

      }

}

Erro:

Exception in thread "main" java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource

Por favor, pessoal, me ajudem.
Obrigado.

Rodrigo

4 Respostas

furutani

Sobre o erro apresentado, falta adicionar os jars do jasperreports no classpath da aplicação

R

Entendi, mas vc sabe me dizer qual jar que tem que adicionar?
Os jar que eu já estou utilizando eh:
commons-collections.jar

commons-logging-api.jar
iReport.jar
jasperreports.jar
mysql-connector-java-3.0.8-stable-bin.jar
jdt-compiler.jar
itext-1.02.jar
poi-2.0-final-20040126.jar

Obrigado.

Rodrigo

furutani

tirando poi-2.0-final-20040126.jar e jdt-compiler.jar todos os outros precisa, e acho q esta faltando coisa nessa lista.

R

Nao entendi mto bem.
Os jar que eu estou adicionando na aplicação sao aqueles que eu falei.
Falta algum? Qual?
Obrigado.

Rodrigo

Criado 29 de maio de 2008
Ultima resposta 29 de mai. de 2008
Respostas 4
Participantes 2