[RESOLVIDO] JComboBox não seleciona item duplicado

Eu carrego o combo com o BD, só que vi agora que quando eu tenho dois itens iguais ele não seleciona, só seleciona um

exemplo: Antonio, Sandro, Junior,[color=red] Antonio[/color], Marcos…

ele só carrega o primeiro antonio, sendo que no banco de dados os dados são diferentes só o nome é igual,

alguém sabe como resolver esse impasse?

Acredito que o seu SELECT voce tem que usar LEF JOIN, acredito que esta usando INNER JOIN.
mas seu erro é apenas na estrutra SQL do SELECT!

Obrigado pela atenção Vitor
humm, mas acontece que só tenho uma tabela, não estou trabalhando com relacionamento…

Oi,

Posta seu código relacionado ao JCombo.

Tchauzin!

meu select no Dao, Não tem where olha como ele tá

DAO

"SELECT Cod,Nome, Endereco, Telefone, " + "Telefone_2, Telefone_3,Email, to_char(Data_nascimento,'dd/MM/yyyy'), Formacao," + " funcao,Exp_1, Exp_2, Exp_3, Cursos, Trab_Weld,Situacao_Contrat, " + "to_char(Data_Entrevista,'dd/MM/yyyy'), Salario, Obser FROM Curriculo order by nome"

JFRAME


        if (pesquisar.isPopupVisible()){          
     
     Curriculum carregando;//essa classe contem os MODELOS
              ArrayList<Curriculum> resultado;//GUARDANDO DENTRO DE UM ARRAY
        int i;
        String nome1 = "",novo = "";
        ControleCurriculum controle = new ControleCurriculum();  //INSTANCIANDO A CLASSE CONTROLE
        resultado = controle.buscarCurriculum(nome1); 
        
        i = pesquisar.getSelectedIndex();
        carregando  = resultado.get(i);

         String trabalhou;
       novo = novo+carregando.getCod();
       codigo.setText(novo);
end.setText(carregando.getEnd());

Pessoal deve ser poque eu eu manipulando pelo NOME, que é exibido dentro do jcombobox.

Oi,

O código abaixo está um pouco estranho:

[code] if (pesquisar.isPopupVisible()){

 Curriculum carregando;
          ArrayList<Curriculum> resultado;
    int i;
    String nome1 = "",novo = "";
    ControleCurriculum controle = new ControleCurriculum();  
    resultado = controle.buscarCurriculum(nome1);
    
    i = pesquisar.getSelectedIndex();
    carregando  = resultado.get(i);

     String trabalhou;
   novo = novo+carregando.getCod();
   codigo.setText(novo);

end.setText(carregando.getEnd());[/code]

Observe que você criou uma variavel nome1 recebendo o valor vazio. Depois você utilizou a chamada do método buscarCurriculum(nome1). Ou seja, você está buscando um currículo de uma pessoa que não existe (vazio).

Quando você executa o resultado.get(i) provavelmente está retornando nada. Justamente pelo motivo que citei acima.

Tendeu?

Tchauzin!

é verdade lina vc tem toda razão rsrs,

deixa eu colocar a classe controle ai sim da pra intender…
rsrs

CONTROLE:

public ArrayList<Curriculum> buscarCurriculum(String nome) { Curriculum curriculum; ArrayList<Curriculum> resultado; int i; CurriculumDao dao = new CurriculumDao(); i = nome.length(); if (i==0) { resultado = dao.buscarTodos();//como ele ta vindo vazio sempre ele vai buscar todos nhe? lá do dao... } else { resultado = dao.buscar(nome);// } return resultado; }

Eu seleciono toda a tabela e depois vou usando as linhas que o combobox selecione…

uma coisa simples seria vc colocar uma string dentro do jcombobox o cod junto.

Dai ficaria o nome e o código no combo.

[quote=wilkem]uma coisa simples seria vc colocar uma string dentro do jcombobox o cod junto.

Dai ficaria o nome e o código no combo.
[/quote]

Oi,

Exatamente. O problema dele é exatamente essa falta do código, que pode ou não ficar visível no JCombo. Podes apresentar apenas o nome e o código fica interno no programa (se for o caso).

Tchauzin!

ho wilkem nesse meus exemplos vc sabe como implementar isso? no começo eu até tentei mas não consegui…

ho lina da uma dica por favor como faz, olha se tiver sem tempo agora eu espero pra quando vc tiver um tempinho…

abraço muito obrigado meus nobress…

é pq minha lógica de programação é deficiente mas estou tentando aprender…

Oi,

Então. Na verdade é simples. Quando você executar o método dao.buscarTodos() irá trazer todas as linhas na base de dados. Evidentemente, se você tiver duas LINA cadastrada (o que é muito dificil existir 2 nome desse no mundo), o seu ArrayList conterá 2 add LINA. Justamente porque o ArrayList não elimina os indices duplicados (o que é correto).

A única forma de diferencia-las, seria a utilização do código da pessoa (SELECT Cod, Nome). Então, logicamente, você deve popular o seu JCombo com COD - NOME.

Após o retorno Array de buscarCurriculum(String), você deverá percorre-lo e compara-lo com o getSelectedIndex do seu JCombo.

[code]resultado = controle.buscarCurriculum(nome1);

for (int i = 0; i < resultado.size(); i++) {

int
ln_cod = resultado.get(i).getCod();

String
ls_nome = resultado.get(i).getNome();

String
ls_juntando = String.valueOf(ln_cod)+"-"+ls_nome;

if (pesquisar.getSelectedItem().toString().equals(ls_juntando)) {

  // encontrei a pessoa certa.

}
}[/code]

Tchauzin!

eita to tentando implementar pera ae

Lina to tendo problema para colocar o modelo olha só:

[code]
Curriculum carregando;// ele pede para iniciar a variavel
ArrayList resultado;

    String nome1 = "";
    ControleCurriculum controle = new ControleCurriculum();  
    
    resultado = controle.buscarCurriculum(nome1);  

for (int i = 0; i < resultado.size(); i++) {

int
ln_cod = resultado.get(i).getCod();

String
ls_nome = resultado.get(i).getNome();

String
ls_juntando = String.valueOf(ln_cod)+"-"+ls_nome;

if (pesquisar.getSelectedItem().toString().equals(ls_juntando)) {
nome.setText(carregando.getNome());//da erro aqui pq carregando não foi iniciado; antes era: i = pesquisar.getSelectedIndex();
carregando = resultado.get(i);
end.setText(carregando.getEnd());
// encontrei a pessoa certa.

}
} [/code]

Oi,

Você vai ter que usar agora a variavel resultado.

[code]Curriculum carregando;// ele pede para iniciar a variavel
ArrayList resultado;

    String nome1 = "";
    ControleCurriculum controle = new ControleCurriculum();  
    
    resultado = controle.buscarCurriculum(nome1);  

for (int i = 0; i < resultado.size(); i++) {

int
ln_cod = resultado.get(i).getCod();

String
ls_nome = resultado.get(i).getNome();

String
ls_juntando = String.valueOf(ln_cod)+"-"+ls_nome;

if (pesquisar.getSelectedItem().toString().equals(ls_juntando)) {
nome.setText(resultado.get(i).getNome()); // ou então nome.setText(ls_nome); —> vai dar o mesmo resultado.
carregando = resultado.get(i);
end.setText(carregando.getEnd());
// encontrei a pessoa certa.

}
} [/code]

Lina é porque o meu select colocar toda a consulta dentro da Classe MODELO que é a classe: CURRICULUM,

dai ele não ta setando nada pq agente não ta acessando o resultado dentro da classe modelo, deixa eu te mostrar ela:

eu uso essa classe pra intermediar entre o banco e a aplicação tudo passa por aqui:
se vc olhar o meu select sempre uso ele…

[code]
/
package modelo;
/
*
*

  • @author Oesly Nunes
    */
    public class Curriculum {
    private int cod;
    private int maxCod;
    private String nome;
    private String end;
    private String tel1;
    private String tel2;
    private String tel3;
    private String email;
    private String formacao;
    private String funcao;
    private String experiencia1;
    private String experiencia2;
    private String experiencia3;
    private String cursos;
    private String trabalhouNaWeld;
    private String situacaoContrato;
    private String dataEntrevista;
    private String salario;
    private String nascimento;
    private String observacao;

     public void setCod(int cod) {  
     this.cod = cod;  
     }  
     public void setMaxCod(int maxCod) {  
     this.maxCod = maxCod;  
     }  
     public void setNome(String nome) {
     this.nome = nome;
     }
     public void setEnd(String end) {
     this.end = end;
     }
     public void setTel1(String tel1){
     this.tel1 = tel1;
     } 
     public void setTel2(String tel2){
     this.tel2 = tel2;
     }
     public void setTel3(String tel3){
     this.tel3 = tel3;
     }
     public void setEmail(String email){
     this.email = email;
     }
     public void setFormacao(String formacao){
     this.formacao = formacao;
     }
     public void setFuncao(String funcao){
     this.funcao = funcao;
     }
     public void setExperiencia1(String experiencia1){
     this.experiencia1 = experiencia1;
     }
     public void setExperiencia2(String experiencia2){
     this.experiencia2 = experiencia2;
     }
    
     
     
     
     public int getCod(){  
     return this.cod;  
     }  
     public int getMaxCod(){
     return this.maxCod;
     }
     public String getNome() {
     return this.nome;
     }
     public String getEnd() {
     return this.end;
     }
     public String getTel1(){
     return this.tel1;
     } 
     public String getTel2(){
     return this.tel2;
     }
     public String getTel3(){
     return this.tel3;
     }
     public String getEmail(){
     return this.email;
     }
     public String getFormacao(){
     return this.formacao;
     }
     public String getFuncao(){
     return this.funcao;
     }
     public String getExperiencia1(){
     return this.experiencia1;
     }
    

}[/code]

Oi,

Faz isso então ó:

[code]Curriculum carregando;// ele pede para iniciar a variavel
ArrayList resultado;

    String nome1 = "";
    ControleCurriculum controle = new ControleCurriculum();  
    
    resultado = controle.buscarCurriculum(nome1);  

for (int i = 0; i < resultado.size(); i++) {

int
ln_cod = resultado.get(i).getCod();

String
ls_nome = resultado.get(i).getNome();

String
ls_juntando = String.valueOf(ln_cod)+"-"+ls_nome;

if (pesquisar.getSelectedItem().toString().equals(ls_juntando)) {
carregando = resultado.get(i);
nome.setText(carregando.getNome()); // ou então nome.setText(ls_nome); —> vai dar o mesmo resultado.

   end.setText(carregando.getEnd());
  // encontrei a pessoa certa.  

}
} [/code]

ele não ta carregando nada nos campos, olha o que ele deve fazer é ao selecionar o item do JCOMBOBOX que é o NOME ele carregar todas as informações referentes no demais componentes como: endereço, telefone…

não da erro mas não ta preenchendo nada…

[quote=Oesly]ele não ta carregando nada nos campos, olha o que ele deve fazer é ao selecionar o item do JCOMBOBOX que é o NOME ele carregar todas as informações referentes no demais componentes como: endereço, telefone…

não da erro mas não ta preenchendo nada…[/quote]

Oi,

Coloca System.out.println e verifica o que está acontecendo!

[code]Curriculum carregando;// ele pede para iniciar a variavel
ArrayList resultado;
System.out.println(“1”);
String nome1 = “”;
ControleCurriculum controle = new ControleCurriculum();
System.out.println(“2”);
resultado = controle.buscarCurriculum(nome1);
System.out.println("3 "+resultado.size());
for (int i = 0; i < resultado.size(); i++) {
System.out.println(“4”);
int
ln_cod = resultado.get(i).getCod();
System.out.println("4.1: "+ln_cod);
String
ls_nome = resultado.get(i).getNome();
System.out.println(“4.2: “+ls_nome);
String
ls_juntando = String.valueOf(ln_cod)+”-”+ls_nome;
System.out.println("4.3: "+ls_juntando);
System.out.println("4.4: "+pesquisar.getSelectedItem().toString());
if (pesquisar.getSelectedItem().toString().equals(ls_juntando)) {
carregando = resultado.get(i);
nome.setText(carregando.getNome()); // ou então nome.setText(ls_nome); —> vai dar o mesmo resultado.

   end.setText(carregando.getEnd());
  // encontrei a pessoa certa.  

}
} [/code]

Posta aqui depois :wink:

Tchauzin!