Ola pessoal,
estou com uma dúvida no meu programa que é o seguinte, eu tenho 2 classes, a classe jifRelAlunos e a classe relAlunos, na classe jifRelAlunos, eu tenho uma tabela que mostra as informações que estão armazenadas no banco de dados. Tenho opção de filtrar determinados resultados, e tenho 1 botão que gera Relatório. Quando clico neste botão, ele chama a classe relAlunos e faz todo o procedimento. Entretanto, gostaria de deixar o meu relatório personalizado, e imaginei que poderia fazer isto através de Encapsulamento (métodos set e get), só que a instrução sql não chega na classe relAlunos, exceto se for a instrução sql que criou na 1° vez a Tabela que está na classe jifRelAlunos.
Detalhe interessante, é que na classe jifRelAlunos eu insiro as informações que estão no Banco de Dados em uma tabela, entretanto, se eu tirar esta inicialização, também não consigo fazer com que a instrução sql vá para a classe relAlunos. Se eu estou setando as informações nos metodos set and get, porque justamente esta informação não é recebida pelos métodos?
Vou postar os meus códigos para melhor compreensão:
Classe jifRelAlunos:
package clocktime;
import java.sql.ResultSet;
public class jifRelAlunos extends javax.swing.JInternalFrame {
String sql;
/** Creates new form jifRelAlunos */
public jifRelAlunos() {
initComponents();
S = new selectDados();
U = new updateDados();
//MEU PROBLEMA TA AQUI Ó!
initTabela();
}
private void initTabela(){
try {
//MEU PROBLEMA TA AQUI Ó!
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
resizeColumns();
} catch (Exception e) {
e.printStackTrace();
}
}
private void jbPesquisarActionPerformed(java.awt.event.ActionEvent evt) {
String nome = jtfNome.getText().trim();
// String ordenacao = "order by";
try {
if (jchbNome.isSelected()) {
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod and r.nome like '" + nome + "%' order by r.nome asc";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
jTable1.updateUI();
resizeColumns();
}
if (jchbCurso.isSelected()) {
if (jchbCursoXP.isSelected()) {
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_xp desc, r.cod asc";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
jTable1.updateUI();
resizeColumns();
}
if (jchbWord.isSelected()) {
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_word desc, r.cod asc";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
jTable1.updateUI();
resizeColumns();
}
if (jchbExcel.isSelected()) {
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_excel desc, r.cod asc";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
jTable1.updateUI();
resizeColumns();
}
if (jchbPoint.isSelected()) {
sql = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod order by curso_point desc, r.cod asc";
rs = S.preencheDataSet(sql);
setSql(sql);
jTable1.setModel(new ResultSetTableModel(rs));
jTable1.updateUI();
resizeColumns();
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
//Seta informação do sql
public void setSql(String sql) {
this.sql = sql;
System.out.println(sql);
}
//Retorna informação do sql
public String getSql() {
return sql;
}
private void jbGerarRelatorioActionPerformed(java.awt.event.ActionEvent evt) {
relAlunos rel = new relAlunos();
String query = getSql();
//System.out.println(query);
try {
rel.geraRelatorio(query);
} catch (Exception e) {
e.printStackTrace();
}
}
Classe relAlunos:
package clocktime;
import java.sql.*;
import java.util.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
public class relAlunos {
private static final String diretorio = "C:\\Sistema\\reports\\";
private static final String relatorio = diretorio + "rel_alunos.jasper";
private static final String print = diretorio + "rel_alunos.jprint";
private static final String pdf = diretorio + "rel_alunos.pdf";
private static Connection getConnection() throws ClassNotFoundException, SQLException {
retornaIP ip = new retornaIP();
ip.run();
String local = ip.getIP();
String Driver = "com.mysql.jdbc.Driver";
String MySqlConnectString = "jdbc:mysql://" + local + ":3306/clocktime";
String username = "******";
String password = "******";
Class.forName(Driver);
Connection con = DriverManager.getConnection(MySqlConnectString, username, password);
return con;
}
/* Gera Relatorio e visualiza-o */
public void geraRelatorio(String query) throws JRException, Exception {
jifRelAlunos RA = new jifRelAlunos();
query = RA.getSql();
Connection con = getConnection();
Statement stm = con.createStatement();
System.out.println(query);
//String query = "select * from reg_alunos";
//String query
// String query = "SELECT r.cod as cod_aluno, r.nome as nome_aluno, r.endereco as endereco_aluno, r.numero as numero_aluno, r.complemento as complemento_aluno, r.bairro as bairro_aluno, r.cidade as cidade_aluno, r.uf as uf_aluno, r.rg as rg_aluno, r.cpf as cpf_aluno, r.sexo as sexo_aluno, r.telefone as telefone_aluno, r.celular as celular_aluno, r.periodo as periodo_aluno, r.curso_xp as curso_xp_aluno, r.curso_word as curso_word_aluno, r.curso_excel as curso_excel_aluno, r.curso_point as curso_point_aluno, r.idade as idade_aluno, u.cod as cod_uf, u.uf as nome_uf FROM reg_alunos r inner join reg_uf u on r.uf = u.cod";
ResultSet rs = stm.executeQuery(RA.getSql());
/* implementação da interface JRDataSource para DataSource ResultSet */
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
/* HashMap de parametros utilizados no relatório. Sempre instanciados */
Map parameters = new HashMap();
// //compila o relatório
JasperPrint impressao = JasperFillManager.fillReport(relatorio, parameters, jrRS);
JasperExportManager.exportReportToPdfFile(impressao, pdf);
/* Visualiza o relatório em formato PDF */
JasperViewer.viewReport(impressao, false);
}
public static void main(String[] args) throws JRException, Exception {
new relUtil().geraRelatorio();
}
}
Muito obrigado a todos!