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