Erro em método de exclusão pessoal!

21 respostas
andre_bento

Fala ae galera!!!
Po... esse é meu primeiro post aqui no fórum e gostaria de conta com a ajuda de vcs em um probleminha aqui galera!!!
tipo.. .estou desenvolvendo um aplicativo para um amigo meu...mas estou tentdo problemas no método de exclusão de clientes aqui...
Não estou conseguindo pegar o número do código que o usuário digita e guardar em uma variável para poder realizar a exclusão depois
!!!

O código do meu controle é esse ae!!

package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;
 
public class ControleExcluiCliente implements ActionListener {

	 
	 private TelaExcluiCliente telaExcluiCliente;
	
	
	 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
	 DAOCliente dao = df.getDAOCliente();
	 Cliente cliente = new Cliente();
	 private String codigo;
	 
	 
	 public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){
		 
		 this.telaExcluiCliente = telaExcluiCliente;
		 telaExcluiCliente.setOuvinte(this);
	
	 }// fim do construtor
	
	 
	 public void consultarExclusao(){
			try{
				/*Estou com problemas aqui galera... quando manda a minha variável código
				 * receber o número que o cara me mandou e guardar para eu usar no meu método ActionPerformed
				 * acima ele está indo como null... mas quando faço o debug a variável codigo está recebendo sim o valor
				 * mas por algum motivo ela está perdendo esse valor quando chamo no método acima...
				 * tipo como se estivesse criando uma nova instância da mesma!!!
				 */
				codigo = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigo);
				dao.consultar(cliente);
			    
				if (cliente.getNome() != null){
					TelaExcluiCliente tela = new TelaExcluiCliente();
					ControleExcluiCliente controle = new ControleExcluiCliente(tela);
					tela.setSize(800,600);
					tela.setVisible(true);
					tela.setLocation(200,200);
					
					tela.setDados(cliente);
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
	 
	 }
	 
	 public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		
		}
		if (comando.equals("excluir")){
			
			Object [] opcoes = {" Sim "," Não "};
			int n = JOptionPane.showOptionDialog(null, "Você tem certeza de que deseja excluir o cliente selecionado?", "Confirmar Exclusão", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);
 				// é bem aqui amigos... tenho que bolar um código para setar o meu código pois dessa maneira não está indo!
                                                //Vejam se estou fazendo algo de errado com as instâncias dos controles... parece que ele está criando novas cópias das variáveis por isso está zerando!!
			if (n==0){
				dao.consultar(cliente);
				cliente.setCodigo(eu);
				
				if (cliente.getCodigo()==null){
					JOptionPane.showMessageDialog(null,"MERDA "+cliente.getCodigo());
				}
				dao.excluir(cliente);
				fechar();
				
			}
			
			
		}
	}
	
	public void fechar (){
		
		telaExcluiCliente.dispose();
	}
	
	 
	
		
	
public String getCodigo(){
	return codigo;
}


}

E tipo galera.. .estou fazendo a chamada do meu controleExcluiCliente na classe ControleCadCliente da seguinte maneira!!

package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
import visao.TelaConsultaCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;


public class ControleCadCliente implements ActionListener {

		
		 private TelaCadCliente tela ;	
		 private TelaConsultaCliente telaConsulta = new TelaConsultaCliente();
		 private TelaExcluiCliente telaExcluiCliente = new TelaExcluiCliente();
		 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
		 DAOCliente dao = df.getDAOCliente();

 

 	public ControleCadCliente(TelaCadCliente tela){
 		
 				
		this.tela = tela;
		
		//ativa os Listeners
		tela.setOuvinte(this);
 	}


	public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		 }
		 else
			 if (comando.equals("cadastrar")){
				
				 if (tela.verificaCampos(tela.getCamposOk())){
					try{
						 Cliente cliente = new Cliente();
						 ControleCadCliente controle = new ControleCadCliente(tela);
						 TelaCadCliente cl = new TelaCadCliente();
						 
						 tela.mudaDados(cliente);
						 
												 
						 dao.cadastrar(cliente);
						 JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!","Cadastro de cliente",JOptionPane.INFORMATION_MESSAGE);
						 tela.limpaCampos();
					
					}
				 
					catch (Exception e){
						JOptionPane.showMessageDialog (null, "Erro durante a gravação do novo cliente! :"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
						}
					
					}
				 
				 
				 
				 else
					 JOptionPane.showMessageDialog (null, "Os campos sinalizados com  *  são de preenchimento obrigatório!", "ATENÇÂO", JOptionPane.WARNING_MESSAGE);
			 }
		

		if (comando.equals("consultar")){
			
			ControleConsultaCliente ctrlConsultaCliente = new ControleConsultaCliente(telaConsulta);
			ctrlConsultaCliente.consultar();
			}
		else
		if (comando.equals("excluir")){
		  /* Aqui está sendo feita a chamda para o controle e também para método que falei acima 
			 * 
			 */

 ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
		   controleExcluiCliente.consultarExclusao();	
		}
		else
		if (comando.equals("alterar")){
			
			
		}
		else
			if (comando.equals("limpar")){
				tela.limpaCampos();
			}
			
	} 
	
	
	public void fechar (){
		tela.dispose();
	}

	
	
}

Me ajuda ae galeraaaa!!!
Um abraço a todos!

21 Respostas

Focao

onde dá o erro ?

tem o log do erro ?

manda o stacktrace

andre_bento

Olá amigo!!!

Bom o erro é que ele não está pegando as informações do código do cliente!!
Ae não estou tendo como setar minha classe dao para excluir o cara lá!!!
Esse método consultarExclusão é para ver se realmente o cara existe… ele existindo eu crio o controle e também a tela…
Mas só que não estopu conseguindo pegar o valor que foi digitado pelo usuário!!!
Ele está fazendo a consulta normalmente… tá vendo lá se o cara existe ou não… mas na hora que tento usar essa variável código novamente para excluir o cara ela já tá como null… Acho que é porque to criando duas instâncias do meu controile… mas não to sabendo como posso mudar o código!!!
Me ajuda ae galeraaa!!!
Um abraço a todos!!

wbdsjunior

andre_bento:
codigo = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE); cliente.setCodigo(eu);

o que que é esse “eu” do cliente.setCodigo(eu)??? não seria o “codigo” que você deve setar ali???

p.s.: desculpe-me se disse alguma besteira…

Focao

blz mas que é “eu” hehehe sem gozação é que ficou engraçado a pergunto.

cliente.setCodigo(eu);

andre_bento

Olá amigo!!!
É sinm… eu consertei depois aqui… desculpe!!
MAs o erro persiste…
Obrigado pela ajuda!!!

Focao

blz mas ser for sim

não pode entrar nesse if

if (cliente.getCodigo()==null)

andre_bento

Pois é amigo!!!Ele está caindo no if toda vez que tento executar!!!
Fiz o debug e vi que no método consultarExclusao ele está sendo preenchido corretamente… mas quando vou tentar pegar o valor ali em cima ele já tá null!!! :oops: :oops: :oops: :!: :!: :!: :oops:
Abração!

andre_bento

Ajuda ae galeraaaaaaaaaaa!!!
Pleeeease!!!

andre_bento

UUUUP!!

Focao

andre_bento:
Pois é amigo!!!Ele está caindo no if toda vez que tento executar!!!

Brow impossível

e além disso vc não pode falar pro cara digitar o código pra exclusão ?

se o cara digitar errado ? vai excluir outro ?

Ele te que digitar aí vc pergunta pra ele se ele tem certeza que quer deletar aquele cara…

ai vc tem o id

andre_bento

Olá amigo!!
Não tipo… Quando o cara digita o código para exclusão eu faço uma busca no sistema… e depois se eu achei o cara eu exibo uma tela com todos os dados do cliente para a visualização do usuário e com um botão de confirmar exclusão e um de cancelar!!
Modifiquei um pouco meu código mas até agora nada galera… deem uma olhada!!

Esse é o código do ControleExcluiCliente

package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;
 
public class ControleExcluiCliente implements ActionListener {

	 String codigoExclusao;
	 private TelaExcluiCliente telaExcluiCliente;
	 Cliente cliente = new Cliente();
	
	 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
	 DAOCliente dao = df.getDAOCliente();
	
	 TelaCadCliente tela ;
	 ControleCadCliente cCliente ;
	 private String eu;
	 
	 
	 public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){
		 
		 this.telaExcluiCliente = telaExcluiCliente;
		 telaExcluiCliente.setOuvinte(this);
		 
	 }// fim do construtor
	
	 
	 	 
	 public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		
		}
		if (comando.equals("excluir")){
			 
			
			 Object [] opcoes = {" Sim "," Não "};
			 int n = JOptionPane.showOptionDialog(null, "Você tem certeza de que deseja excluir o cliente selecionado?", "Confirmar Exclusão", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);
 			
			if (n==0){
/*Po.. .aqui está o erro... eu só mandei uma pergunta por usuário perguntando 
			 * se ele gostaria realmente de excluir o cara... To pegando a opção e tratando ela..
			 * Mas o erro está no seguinte... no método consultarExclusao abaixo ele está setando todos os valores 
			 * corretamente... mas quando chamo a variável codigoExclusaor que é a 
			 * que estou utilizando para guardar o código digitado, ela já está null!!!
			 * Agora eu não sei por quê!! Já torrei os miolos aqui mas não descubro o porque dela estar nula!
			 * Estava debugando e não consegui achar o erro... por eu crio o meu controle na classe ControleCadCliente
			 * onde meu menu está... ae depois de criar o controle eu apenas chmo esse método...
			 * 
			 */


						cliente.setCodigo(codigoExclusao);		
				if (cliente.getCodigo()==null){
					JOptionPane.showMessageDialog(null,"MERDA "+cliente.getNome());
				}
				dao.excluir(cliente);
				fechar();
				
			}
			
			
		}
	} 
	
	
	 public void fechar (){
		
		telaExcluiCliente.dispose();
	}
	
	 
	 public void consultarExclusao(){
			try{
					
				codigoExclusao = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigoExclusao);
				cliente=dao.consultar(cliente); 
			  
				if (cliente.getNome() != null){
					TelaExcluiCliente tela = new TelaExcluiCliente();
					ControleExcluiCliente controle = new ControleExcluiCliente(tela);
					tela.setSize(800,600);
					tela.setLocation(200,200);
					tela.setVisible(true);
					
					tela.setDados(cliente);
					codigoExclusao = cliente.getCodigo();
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
			
	 }
	


}

Agora o código da classe onde estou chamando meu controleExcluiCliente!!

package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaAlterarCliente;
import visao.TelaCadCliente;
import visao.TelaConsultaCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;


public class ControleCadCliente implements ActionListener {
	
		private String codigo,codigoExclusao;
		 private TelaCadCliente tela ;	
		 private TelaConsultaCliente telaConsulta = new TelaConsultaCliente();
		 private TelaExcluiCliente telaExcluiCliente = new TelaExcluiCliente();
		 private TelaAlterarCliente telaAlterarCliente = new TelaAlterarCliente();
		 //Cliente cliente = new Cliente();
		 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
		 DAOCliente dao = df.getDAOCliente();
		 Cliente cliente1 = new Cliente();
 

 	public ControleCadCliente(TelaCadCliente tela){
 		
 				
		this.tela = tela;
		
		//ativa os Listeners
		tela.setOuvinte(this);
 	}


	public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		 }
		 else
			 if (comando.equals("cadastrar")){
				
				 if (tela.verificaCampos(tela.getCamposOk())){
					try{
						 Cliente cliente = new Cliente();
						 ControleCadCliente controle = new ControleCadCliente(tela);
						 TelaCadCliente cl = new TelaCadCliente();
						 
						 tela.mudaDados(cliente);
						 
												 
						 dao.cadastrar(cliente);
						 JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!","Cadastro de cliente",JOptionPane.INFORMATION_MESSAGE);
						 tela.limpaCampos();
					
					}
				 
					catch (Exception e){
						JOptionPane.showMessageDialog (null, "Erro durante a gravação do novo cliente! :"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
						}
					
					}
				 
				 
				 
				 else
					 JOptionPane.showMessageDialog (null, "Os campos sinalizados com  *  são de preenchimento obrigatório!", "ATENÇÂO", JOptionPane.WARNING_MESSAGE);
			 }
		

		if (comando.equals("consultar")){
			
			ControleConsultaCliente ctrlConsultaCliente = new ControleConsultaCliente(telaConsulta);
			ctrlConsultaCliente.consultar();
			}
		else
		if (comando.equals("excluir")){
		   /*Aqui está sendo feita a chamada para meu controleExcluiCliente e também a chamada do método
		     * consultarExclusao() para que o usuário digite o número do código do cliente desejado
		     * 
		     */

                                    ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
		    controleExcluiCliente.consultarExclusao();
		}
		else
		if (comando.equals("alterar")){
			
			consultarAlteracao(getCodigo());
		}
			
		
		else
			if (comando.equals("limpar")){
				tela.limpaCampos();
			}
			
	} 
	
	
	public void fechar (){
		tela.dispose();
	}

	
	
	 public String consultarAlteracao(String codigo){

		 try{
			    Cliente cliente = new Cliente();
				codigo = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Alteração de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigo);
				dao.consultar(cliente);
			    
				if (cliente.getNome() != null){
					TelaAlterarCliente tela = new TelaAlterarCliente();
					ControleAlterarCliente controle = new ControleAlterarCliente(tela);
					tela.setSize(800,600);
					tela.setVisible(true);
					tela.setLocation(200,200);
					
					tela.setDados(cliente);
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
			
	 	
		 
		 return codigo;
	 }
	
	
	
	
	public String getCodigo(){
		codigoExclusao = cliente1.getCodigo();
		return codigoExclusao;
	}
}

Por favor pessoal!!! Ajuda aeeeeeeeee!!

Focao

tah um pouco confusa a lógica.

mas parece que seu contrutur ta estranho

public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){   
           
         this.telaExcluiCliente = telaExcluiCliente;   
         telaExcluiCliente.setOuvinte(this);   
           
     }// fim do construtor

vc ta setando o telaExcluicliente nela mesmo

e depois chama de novo consultarExclusao a confirmação…

codigoExclusao = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);   
                cliente.setCodigo(codigoExclusao);

Nesse techo:

ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);   
controleExcluiCliente.consultarExclusao();

nãop deveria passar o parametro direto ?

tipo assim ?

ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente();   
controleExcluiCliente.consultarExclusao(telaExcluiCliente);
andre_bento

Olá amigo!!!

Meu método consultarExclusao() é somente para fazer uma busca… .e por isso não passei parâmetros nele… O meu controle recebe como parâmetro minha tela… e meu método não pega parâmetros…
Mas em que parte estou chmando denovo o método consultarExclusao ???

Muito obrigado pela ajuda… desculpa se não fui claro em alguma coisa ae :D!!!
Abração!

andre_bento

Amigo!!
Acho que to sacando o problema…
tipo… .eu coloquei meu método consultarExclusao() para ser chamado dentro do construtor da minha classe ControleExcluiCliente; eu consegui excluir o cliente… mas agora o erro é que toda hora fica aparecendo o InputDialog para eu entrar com o código do cliente!!!
Porque dentro do meu método consultarExclusao() eu crio um objeto do meu controle…
Onde posso criar meu controle para acabar com isso???
Não sei se essa ´[e a maneira certa de resolver o problema!!
Valeu pela ajuda Focão!!

Focao

boa andre_bento

eu odeio contrutores…

só uso pra PK

bom FDS

Focao

boa andre_bento

eu odeio contrutores…

só uso pra PK

bom FDS

andre_bento

Pois é amigo!!
Eu também só utilizo meus construtores para inicialização de variáveis e tals… Como a facul ensina11heheheheh
MAs tipo cara… .pude sacar que o erro está justamente quando quando eu estava fazendo a chamada do método consultarExclusao() pela outra classe!!
Tipo que ele chamava meu método lá na classe ControleExcluiCliente, mas quando voltava pra classe ControleCadCliente ele já perdia todos os valores!!
Agora to tentando descobrir o porque isso está ocorrendo… pois não faço a mínima idéia!!!
kkkkkkkkkkkkkk
Valeu cara… abraços!!!

andre_bento

UUUUUUUUP!!!

Help guys!!!
PLeeeeeeeease!

adriano_si

Põe o DAO aí cara… pra darmos uma olhada…

Falows :wink:

andre_bento

Opa!!!
Beleza amigão!!
Segue o código da minha DAOCLientePSQL :

package dao;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
public class DAOClientePSQL implements DAOCliente { 

	//private TelaCadCliente cliente = new TelaCadCliente();
	
	private PreparedStatement sql = null; 
	private ResultSet r = null;
	
	
public void cadastrar (Cliente c){
		
		try {
			
			sql=DAOFactoryPSQL.getConnection().prepareStatement("insert into cliente values (?,?,?,?,?,?,?,?,?,?,?)");
			
			sql.setString(1 , c.getNome());
			sql.setString(2 , c.getEndereco());
			sql.setString(3 , c.getTel());
			sql.setString(4 , c.getTelTrabalho());
			sql.setString(5 , c.getTelCel());
			sql.setString(6 , c.getCpf());
			sql.setString(7 , c.getNumero());
			sql.setString(8 , c.getCep());
			sql.setString(9 , c.getIdentidade());
			sql.setString(10 ,c.getBairro());
			sql.setString(11 , c.getCodigo());
			
			
			
			//executa o sql
			sql.executeUpdate();
			
		}
		
		catch (Exception e){
			JOptionPane.showMessageDialog(null,"Erro durante o cadastro do cliente : "+e,"ERRO",JOptionPane.ERROR_MESSAGE);
		}
	
	}
	
	public void excluir (Cliente c){
		
		try {
			
			//cria o sql
			sql = DAOFactoryPSQL.getConnection().prepareStatement("delete from cliente where codigo = ?");
			sql.setString(1,c.getCodigo());
			sql.executeUpdate();		
		}
	
		catch (Exception e) {
			JOptionPane.showMessageDialog(null,"Erro durante o acesso ao Banco para a exclusão do cliente!","ERRO",JOptionPane.ERROR_MESSAGE);
		}
	}
	
	public void alterar (Cliente c){
		
		try {
			
			sql = DAOFactoryPSQL.getConnection().prepareStatement("update cliente set nome=?, endereco=?,tel=?,telTrabalho=?,telCel=?,cpf=?,numero=?,cep=?,identidade=?,bairro=? where codigo =?");
			sql.setString(1, c.getCodigo());
			
			
			
			sql.executeUpdate();
			
		}
		catch (SQLException e){
			JOptionPane.showMessageDialog(null,"Erro de SQL:"+e.getMessage());
		}   catch (Exception e){
			JOptionPane.showMessageDialog(null,"erro de alteracao");
		}
	}
	
	public Cliente consultar (Cliente c){
		
		try {
			
			sql = DAOFactoryPSQL.getConnection().prepareStatement("select * from cliente where codigo = ?");
			sql.setString(1, c.getCodigo());
			r=sql.executeQuery();
			
			if (r.next()){
				
				c.setCodigo(r.getString("codigo"));
				c.setNome(r.getString("nome"));
				c.setEndereco(r.getString("endereco"));
				c.setCep(r.getString("cep"));
				c.setBairro(r.getString("bairro"));
				c.setCpf(r.getString("cpf"));
				c.setIdentidade(r.getString("identidade"));
				c.setTel(r.getString("tel"));
				c.setTelCel(r.getString("telCel"));
				c.setTelTrabalho(r.getString("telTrabalho"));
				c.setNumero(r.getString("numero"));
				
								
				return c;
			}
			else
				JOptionPane.showMessageDialog (null, "Cliente não cadastrado!","ERRO",JOptionPane.ERROR_MESSAGE);
		}
			
		catch (Exception e){
			JOptionPane.showMessageDialog(null,"Erro durante a consulta no Banco de Dados :" +e, "ERRO",JOptionPane.ERROR_MESSAGE);
			
		}
		return null;
	}
	
	
	public Vector consultarTodos() {
   
		Vector v= new Vector();
   	
   		try {
				sql=DAOFactoryPSQL.getConnection().prepareStatement("select * from aluno");
				r=sql.executeQuery();
				while(r.next())
				{
				 Cliente cl= new Cliente();
				 cl.setNome(r.getString("nome"));
				 
				 
				 v.add(cl);
				 
				 
				 }
				return v;
			} catch (SQLException e) 
			{
				e.printStackTrace();
				return null;
			}
   	
   }
	
	public Vector consultarNome(Cliente c)
	   {
		   try
		   {
			   PreparedStatement sql=DAOFactoryPSQL.getConnection().prepareStatement("select * from aluno where nome like ?");
			   sql.setString(1, c.getNome()+"%");
			   ResultSet r= sql.executeQuery();
			   Vector v= new Vector();
			   while(r.next())
			   {
				     Cliente cl= new Cliente();
					 cl.setNome(r.getString("nome"));
					
					 
					 v.add(cl);
			   } 
		        return v;
		   }
		   catch (Exception e) 
		   {
			return null;
		}
	   }
	
	
	
	public Vector consultarMatricula(Cliente c)
	   {
		   try
		   {
			   PreparedStatement sql=DAOFactoryPSQL.getConnection().prepareStatement("select * from aluno where mat like ?");
			   sql.setString(1, c.getNome()+"%");
			   ResultSet r= sql.executeQuery();
			   Vector v= new Vector();
			   while(r.next())
			   {
				     Cliente am= new Cliente();
					 am.setNome(r.getString("nome"));
					
					 
					 v.add(am);
			   }
		        return v;
		   }
		   catch (Exception e) 
		   {
			return null;
		}
	   }
	
	
	public void finalize (){
		
		try {
			
			sql.close();
			
			
		}
		
		catch (Exception e){
			
		}
	}
	
}
Tipo amigos.. .eu observei o meu erro mas até o momento não consigo descobrir o que fazer!!! Nessa parte do código :
if (comando.equals("excluir")){
				telaExcluiCliente = new TelaExcluiCliente();
				ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
				controleExcluiCliente.consultarExclusao();
				}
Eu estou fazendo a chamada para meu controle e chamando o método consultarExclusao() que está em meu ControleExcluiCliente!!! Para fazer um teste eu coloquei um JOptionPane npo contrutor de minha classe ControleExcluiCliente :
public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){
		
		 this.telaExcluiCliente = telaExcluiCliente;
		 JOptionPane.showMessageDialog(null, "FOI AQUI");
		 telaExcluiCliente.setOuvinte(this);
		 
	 }// fim do construtor

Eu verifiquei que minha classe está sendo chamada duas vezes!!!
Pois está menssagem FOI AQUI está surgindo duas vezes na tela!!
Mas não sei porque galera!!!
Me ajudem aeeeeeee!!!
Agradeço a todos!!!

andre_bento

Galera!!!

Po... estudando aqui meu código consegui descobrir o erro... Mas ainda não conseguir resolvê-lo!! Pessoal... o código de minha classe ControleExcluiCliente () está assim:
package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

import modelo.Cliente;
import visao.TelaCadCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;
 
public class ControleExcluiCliente  implements ActionListener {

	 String codigoExclusao;
	 private TelaExcluiCliente telaExcluiCliente;
	 Cliente cliente = new Cliente();
	 private boolean temOCara = false;
	 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
	 DAOCliente dao = df.getDAOCliente();
	 TelaCadCliente telaCad = new TelaCadCliente() ;
	
	 ControleCadCliente cCliente = new ControleCadCliente(telaCad);
	 /*O problema está aqui ... não sei como vou poder acessar a variável codigoExclusao sem
		 * criar um objeto dessa classe ControleCadCliente()
		 * Mas se eu criar um novo objeto vou perder todos os valores que possuo e estão guardados nas 
		 * variáveis dessa classe
		 */
	 
	 
	 public ControleExcluiCliente (TelaExcluiCliente telaExcluiCliente){
		 this.telaExcluiCliente = telaExcluiCliente;
		 JOptionPane.showMessageDialog(null, "FOI AQUI" +cCliente.getCodigoExclusao());
		 telaExcluiCliente.setOuvinte(this);
		 
	 }// fim do construtor
	
	 
	 	 
	 public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		
		}
		if (comando.equals("excluir")){
			 
			
			 Object [] opcoes = {" Sim "," Não "};
			 int n = JOptionPane.showOptionDialog(null, "Você tem certeza de que deseja excluir o cliente selecionado?", "Confirmar Exclusão", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, opcoes, opcoes[0]);
 			
			if (n==0){
				cliente.setCodigo(cCliente.getCliente().getCodigo());		
				if (cliente.getCodigo()==null){
					JOptionPane.showMessageDialog(null,"MERDA "+cliente.getNome());
				}
				dao.excluir(cliente);
				fechar();
				
			}
			
			
		}
	} 
	
	
	 public void fechar (){
		
		telaExcluiCliente.dispose();
	}
	
	 
	
	 
	
	public boolean getTemOCara(){
		return temOCara;
	}

}
E minha classe ControleCadCliente está assim :
package controle;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import modelo.Cliente;
import visao.TelaAlterarCliente;
import visao.TelaCadCliente;
import visao.TelaConsultaCliente;
import visao.TelaExcluiCliente;
import dao.DAOCliente;
import dao.DAOFactory;


public class ControleCadCliente implements ActionListener {
	
		 private String codigo,codigoExclusao;
		 private TelaCadCliente tela ;	
		 private TelaConsultaCliente telaConsulta = new TelaConsultaCliente();
		 private TelaExcluiCliente telaExcluiCliente;
		 private TelaAlterarCliente telaAlterarCliente = new TelaAlterarCliente();
		 Cliente cliente = new Cliente();
		 DAOFactory df=DAOFactory.getDAOFactory(DAOFactory.POSTGRES);
		 DAOCliente dao = df.getDAOCliente();
		
 
		 
 	public ControleCadCliente(TelaCadCliente tela){
 		
 				
		this.tela = tela;
		
		//ativa os Listeners
		tela.setOuvinte(this);
 	}


	public void actionPerformed(ActionEvent evt) {
		
		String comando = evt.getActionCommand();
		
		if (comando.equals("sair")){
			fechar();
		 }
		 else
			 if (comando.equals("cadastrar")){
				
				 if (tela.verificaCampos(tela.getCamposOk())){
					try{
						 Cliente cliente = new Cliente();
						 ControleCadCliente controle = new ControleCadCliente(tela);
						 TelaCadCliente cl = new TelaCadCliente();
						 
						 tela.mudaDados(cliente);
						 
												 
						 dao.cadastrar(cliente);
						 JOptionPane.showMessageDialog(null, "Cliente cadastrado com sucesso!","Cadastro de cliente",JOptionPane.INFORMATION_MESSAGE);
						 tela.limpaCampos();
					
					}
				 
					catch (Exception e){
						JOptionPane.showMessageDialog (null, "Erro durante a gravação do novo cliente! :"+e,"ERRO",JOptionPane.ERROR_MESSAGE);
						}
					
					}
				 
				 
				 
				 else
					 JOptionPane.showMessageDialog (null, "Os campos sinalizados com  *  são de preenchimento obrigatório!", "ATENÇÂO", JOptionPane.WARNING_MESSAGE);
			 }
		

					if (comando.equals("consultar")){
			
							ControleConsultaCliente ctrlConsultaCliente = new ControleConsultaCliente(telaConsulta);
							ctrlConsultaCliente.consultar();
			} 
				else
						 
			if (comando.equals("excluir")){
				consultarExclusao();
			}
		
			   else
		
				   if (comando.equals("alterar")){
			
				   }
		
			
		
			 else
				 if (comando.equals("limpar")){
					 tela.limpaCampos();
			}
			 
	} 
	
	
	public void fechar (){
		tela.dispose();
	}

	
	
	 public String consultarAlteracao(String codigo){

		 try{
			    Cliente cliente = new Cliente();
				codigo = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Alteração de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigo);
				dao.consultar(cliente);
			    
				if (cliente.getNome() != null){
					TelaAlterarCliente tela = new TelaAlterarCliente();
					ControleAlterarCliente controle = new ControleAlterarCliente(tela);
					tela.setSize(800,600);
					tela.setVisible(true);
					tela.setLocation(200,200);
					
					tela.setDados(cliente);
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
			
	 	
		 
		 return codigo;
	 }
	
	 public void consultarExclusao(){
			try{
					
				codigoExclusao = JOptionPane.showInputDialog(null,"Digite o número do código do cliente","Exclusão de Cliente", JOptionPane.QUESTION_MESSAGE);
				cliente.setCodigo(codigoExclusao);
				cliente=dao.consultar(cliente); 
				
				if (cliente.getNome() != null){
					telaExcluiCliente = new TelaExcluiCliente();
					ControleExcluiCliente controleExcluiCliente = new ControleExcluiCliente(telaExcluiCliente);
					telaExcluiCliente.setSize(800,600);
					telaExcluiCliente.setLocation(200,200);
					telaExcluiCliente.setVisible(true);
					telaExcluiCliente.setDados(cliente);
					codigoExclusao = cliente.getCodigo();
				
				}
				
			}
			
			catch (Exception e){
				JOptionPane.showMessageDialog(null, "Código não encontrado!!!","ERRO",JOptionPane.ERROR_MESSAGE);

				
			}
			
	 }
	

	
public String getCodigoExclusao(){
	return codigoExclusao;
}

public Cliente getCliente (){
	return cliente;
}

}// fim da classe ControleCadCliente

Eu vi que estava realizando duas chamadas em meus controles... por isso perdia o valor das variáveis quando chamava pela segunda vez... pois todas voltavam com o valor null!!!
Não sei se a lógica está confusa ou comlexa... Eu tentei fazer o seguinte!!
Ao clicar no meu para excluir o cliente eu disponibilizo um InputDialog para o usuário digitar o código do cliente.. .em seguida eu mostro todos os dados do cliente para ele ver se é realmente ele que ele quer excluir... clicando no botão confirmar exclusão eu excluo o cliente do BD!!!

Ajuda ae pessoal!!!!
Abraços!!!

Criado 13 de novembro de 2008
Ultima resposta 17 de nov. de 2008
Respostas 21
Participantes 4