Duvida Select

5 respostas
R

Bom dia Galera.

Tenho uma tabela chamada tab_inst (Instituicao) e outra tab_prof (Professor).

Na tela “Cadastro de Professores”, existe um jComboBox que carrega todas instituicoes existentes.
O que preciso fazer é o seguinte:
-Quando escolher a instituicao que esta no combo e depois clicar no botao add, irá atribuir o nome da instituicao que esta Combo para uma jTable.
Fiz da seguinte forma, esta funcionando normal.

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) { DefaultTableModel table_Inst= (DefaultTableModel) jTable2.getModel(); String Inst= (String) jComboBox2.getSelectedItem(); table_Inst.addRow(new Object[] { Inst }); }

Porem o que preciso fazer é alem de trazer o nome da Instituicao, trazer tb o codigo dela.
Nao sei como posso carregar o valor do codigo para quando clicar na instituicao, trazer para minha jTable tb o codigo.
Fiz o select deste jeito, porem nao consgio mais sair disto… nao sei o que posso fazer…

ResultSet rt= stm.executeQuery("select id_inst, nome from tab_inst"); while(rt.next()){ jComboBox2.addItem(rt.getString("nome")); //int Cod_inst= rt.getInt("id_inst"); }
Preciso que o codigo seja oculto … nao carregue no combo… mas ao escolher universidade no combo e depois clicar no botao add, carregue na jTable tanto o nome quanto o codigo desta universidade…

Galera desculpe a confusao… para explicar… hehehe…
Espero que tenham entendido … vlwwww…
Abraco Fika na Paz…

5 Respostas

Preco

Tá, vamos ver se eu entendi…

Tu tem dois objetos, Universidade e Professor, certo?

Se tiver os objetos, tranquilo, pq dá pra fazer da seguinte maneira

  1. Cria a combo;
  2. Ao invés de jogar só o nome da instituição na combo, joga o objeto Instituição inteiro;
  3. Pra evitar que ele mostre o conteúdo do objeto inteiro (com aqueles caracteres feios), você sobrescreve o método toString() do objeto Instituição, retornando o valor que você quer mostrar na combo (no caso, o nome da instituição);
  4. Na hora de pegar o valor da combo pra usar na tabela, tu usa
Instituicao inst= (Instituição) jComboBox2.getSelectedItem();
  1. Daí você vai ter o objeto inteiro, com código, nome, tudo =]

Tenta isso, e vê se funciona

Abraços =]

R

Bom dia…nao entendi mto bem o que quiz dizer… mas nao parece ser isto …

O que estou tentando fazer é o seguinte.
Estou fazendo um select da tabela “Instituicao”, e careando o nome em um jComboBox.
Ao lado do jComboBox tenho um botao"Add", quando o usuario clicar neste botao ira carregar em uma jTable o nome que estava no jComboBox.

Ok, isto esta funcionando normalmente.
Mas o que preciso fazer é o seguinte, quero que quando escolher o nome que esta no combobox e clicar em add, jogue para a jTable tambem o codigo da universidade.

Primeiro Passo.
Quando estou fazendo o select da tabela Instituicao, estou trazendo alem do nome … tb o codigo…
O Problema é que a partir dai nao sei o que tenho que fazer…
Nao sei ond e tenho que carregar o codigo da instituicao. (id_inst).

Preco

O que eu quis dizer foi o seguinte… Ao invés de tu jogar o resultSet direto pro combo, tu joga ele pra um objeto.
Algo mais ou menos assim, ó:

Antes de tudo, tens q ter uma entidade chamada Intituição, mais ou menos assim:

public class Instituicao{
    private int codigo;
    private String nome;
    //Demais informações

    public Instituicao(){}

    
    public void setCodigo(int cd){
        this.codigo = cd;
    }

    public void setNome(String nm){
        this.nome = nm;
    }
    public int getCodigo(){
        return this.codigo;
    }

    public String getNome(){
        return this.nome;
    }

    public String toString(){
        return this.nome;
    }
}

Daí o segundo passo é jogar o conteúdo do ResultSet pra uma instância dessa entidade:

//...
ResultSet rt= stm.executeQuery("select id_inst, nome from tab_inst");
    while(rt.next()){
         Instituicao auxiliar = new Instituicao();
         auxiliar.setCodigo(rt.getInt("id_inst");
         auxiliar.setNome(rt.getString("nome");

        jComboBox2.addItem(auxiliar);     
    }

Desse jeito, na combo estará o objeto inteiro (com o código). Porém, pro usuário só vai aparecer o nome da instituição, porque a gente sobrescreveu o método toString().
Agora, quando tu for pegar o item selecionado na combo,

private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {                                         
       DefaultTableModel table_Inst= (DefaultTableModel) jTable2.getModel();        
       Instituicao inst= (Instituicao) jComboBox2.getSelectedItem();
       table_Inst.addRow(new Object[] { inst.getCodigo(), inst.getNome()  });       
    }

Esse é o jeito mais facinho que eu conheço. Dá pra fazer sem Orientação a Objetos, mas fica meio gambiarrento (sei lá, dá pra criar uma variável global array[] pra guardar nome e código, ou algo assim), mas é válido também.

Abraços =]

R

Kra, nem sei como agradecer…
Estou acho que uns 2 dias sem dormir pq nao estava conseguindo fazer…
`E mto bom saber que temos alguns foruns onde existe pessoas com muita paciencia e vontade de ensinar…

FUNFOU CERTINHO…
A unica coisa que tive que adicionar, foi:

public String getNome(){ return this.nome; }
Tive que adicionar isto, para que pegasse tb. o nome e adicionasse na jTable…

Novamente Brigadaummmm…

Preco

:oops:

Criado 24 de outubro de 2007
Ultima resposta 25 de out. de 2007
Respostas 5
Participantes 2