Olá a todos…
Bom estou desenvolvendo um sistema que gera um Relatório, para ser mais especifico uma etiqueta… Bom consegui criar o (Relatório) e abrir ele pelo sistema que desenvolvi, mas o problema é o seguinte!!! Quando digito o cógido para ele pesquisar no BD quero que me traga no (Relatório) o código que eu digite, mas o que está acontecendo é que ele sempre busca o último registro do BD, sendo que não é essa a finalidade!!!
“Obs. É um sistema Desktop”
Segue as minhas classes
Classe da Tela Autenticação:
import java.sql.*;
import java.util.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
import java.io.*;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.JasperViewer;
public class FAutenticacao extends javax.swing.JFrame {
/** Creates new form FAutenticacao */
public FAutenticacao() {
initComponents();
setBounds(380,250,370,210);
}
private void initComponents() {
buttonGroup1 = new javax.swing.ButtonGroup();
jPanel1 = new javax.swing.JPanel();
jLabel3 = new javax.swing.JLabel();
jPanel2 = new javax.swing.JPanel();
txtRH = new javax.swing.JTextField();
jLabel1 = new javax.swing.JLabel();
jPanel3 = new javax.swing.JPanel();
btnOk = new javax.swing.JButton();
btnCancelar = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
setTitle("Gerador de Eiquetas");
setFont(new java.awt.Font("Agency FB", 0, 3));
setResizable(false);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowOpened(java.awt.event.WindowEvent evt) {
formWindowOpened(evt);
}
});
getContentPane().setLayout(null);
jPanel1.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel1.setLayout(null);
jLabel3.setFont(new java.awt.Font("MS Sans Serif", 1, 12));
jLabel3.setText("Impressão de Etiquetas");
jPanel1.add(jLabel3);
jLabel3.setBounds(60, 10, 180, 15);
getContentPane().add(jPanel1);
jPanel1.setBounds(50, 10, 260, 30);
jPanel2.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel2.setLayout(null);
jPanel2.add(txtRH);
txtRH.setBounds(60, 10, 170, 20);
jLabel1.setText("RH");
jPanel2.add(jLabel1);
jLabel1.setBounds(10, 10, 40, 14);
getContentPane().add(jPanel2);
jPanel2.setBounds(50, 50, 260, 40);
jPanel3.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
jPanel3.setLayout(null);
btnOk.setText("Ok");
btnOk.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnOkActionPerformed(evt);
}
});
jPanel3.add(btnOk);
btnOk.setBounds(20, 10, 100, 23);
btnCancelar.setText("Cancelar");
btnCancelar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
btnCancelarActionPerformed(evt);
}
});
jPanel3.add(btnCancelar);
btnCancelar.setBounds(130, 10, 100, 23);
getContentPane().add(jPanel3);
jPanel3.setBounds(50, 100, 260, 40);
pack();
}// </editor-fold>
public int Pnivel;
private void formWindowOpened(java.awt.event.WindowEvent evt) {
// TODO add your handling code here:
}
private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {
this.dispose();
// TODO add your handling code here:
}
private Connection getConnection() {
Connection con = null;
try {
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/movedb";
String user = "*****";
String password = "*****";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException cnf) {
mostrarErro("Erro ao se conectar");
} catch (SQLException sqlex) {
mostrarErro("Erro ao se conectar");
}
//System.out.println("Conectado");
return con;
}
private void btnOkActionPerformed(java.awt.event.ActionEvent evt) {
ClassAutentica autentica = new ClassAutentica();
autentica.setRH(txtRH.getText());
autentica.setRetornaNivel(1);
String rh = txtRH.getText();
if(autentica.autentica() == false){
JOptionPane.showMessageDialog(null,"RH Não foi localizado! Digite novamente","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
}else{
//JOptionPane.showMessageDialog(null,"RH Localizado","ATENÇÃO",JOptionPane.WARNING_MESSAGE);
Connection con = getConnection();
Map parameters = new HashMap();
String path = "relatorios/SPP.jasper";
File file = new File(path);
file = file.getAbsoluteFile();
String repStr2 = file.getPath();
try {
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from paciente where A_PAC_COD = '"+ txtRH.getText()+"'");
while(rs.next()== true)
JasperFillManager.fillReportToFile(repStr2, parameters, con);
JasperPrint jasperPrint = JasperFillManager.fillReport(repStr2, parameters, con);
JasperViewer viewer = new JasperViewer(jasperPrint, true);
viewer.setVisible(true);
} catch (JRException jex) {
mostrarErro("JasperException: " + jex.getMessage());
} catch (Exception ex) {
mostrarErro("" + ex.getStackTrace());
}
}
}
private void mostrarErro(String msg) {
JOptionPane.showMessageDialog(
null,
msg,
"Erro encontrado",
JOptionPane.ERROR_MESSAGE);
}
/**
* @param args the command line arguments
*/
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new FAutenticacao().setVisible(true);
}
});
}
Classe Autentica
import javax.swing.*;
import java.sql.*;
import javax.swing.JOptionPane;
public class ClassAutentica {
/** Creates a new instance of ClassAutentica */
public ClassAutentica() { }
/*Obs o tipo_usuário está comentado*/
private String rh;
//Variáveis para retornar o RH encontrados no banco
private String retornaRH;
private int retornaNivel;
//======================================
public void setRH(String _RH){
this.rh= _RH;
}
public String getRH(){
return this.rh;
}
public void setRetornaRH(String _retornaRH){
this.retornaRH = _retornaRH;
}
public String getretornaRH(){
return this.retornaRH;
}
public void setRetornaNivel(int _retornaNivel){
this.retornaNivel = _retornaNivel;
}
public int getretornaNivel(){
return this.retornaNivel;
}
ClassConecta conexao = new ClassConecta();
// FPrincipal principal = new FPrincipal();
public boolean autentica(){
boolean valida = true;
try{
conexao.conecta();
Statement stmt = conexao.con.createStatement();
ResultSet rs = stmt.executeQuery("select * from paciente where A_PAC_COD = '"+getRH()+"'");
while(rs.next()){
setRetornaRH(rs.getString("A_PAC_COD"));
setRetornaNivel(1);
}
if(getretornaRH() == null){
valida = false;
}
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n"+ e,"ATENÇÃO",JOptionPane.WARNING_MESSAGE);
}
return valida;
}
}
Classe Conecta
import java.sql.*;
import javax.swing.JOptionPane;
import java.util.HashMap;
import java.net.URL;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import net.sf.jasperreports.engine.*;
public class ClassConecta {
/** Creates a new instance of ClassConecta */
public ClassConecta() { }
//função para conexão com Banco
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/movedb";
private String user ="*****";
private String pwd = "****";
Connection con = null;
public Connection conecta(){
try{
Class.forName(driver);
con = DriverManager.getConnection(url, user,pwd);
}catch(ClassNotFoundException e){
JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Driver não encontrado!\n"+ e,"ATEN��O",JOptionPane.WARNING_MESSAGE);
}catch(SQLException e){
JOptionPane.showMessageDialog(null,"Ocorreu um erro no sistema, se o problema persistir contate o administrador:\n Erro na Conex�o com Banco\n"+ e,"ATEN��O",JOptionPane.WARNING_MESSAGE);
} //System.out.println("Conectado");
return con;
}
//fim da conexao
//========================================================
}
Agradeço desde de já atenção de todos.