Duvidas com tabelas!

7 respostas
Murillo_Pontes

Boa Noite! Pessoal to com uma duvida que não consegui resolver pelos outros topicos do forum.

Estou fazendo um programa de protocolos e ele tem 2 tabelas, uma de cadastro de visitantes (tabelaVisitantes) com os campos (codVisitante, nome, telefone etc) e outra tabela de assunto (tabelaAssuntos) com os campos (codAssunto, assunto e setor) cada uma com seu Jframe para inserir e alterar itens.
Para gerar os protocolos criei outra tabela, tabelaProtocolo e outro jFrame que carrega em um jComboBox os nomes da tabelaVisitantes e os assuntos da tabelaAssuntos em outro jComboBox alem de ter um jtextfield para data e outro para observação.

Gostaria de saber como posso inserir na nova tabela (tabelaProtocolos)) o campo codVisitante da tabelaVisitantes e o campo codAssunto da tabelaAssunto além dos dados dos outros jTextField? Lembrando que no jComboBox são carregados o campo nome da tabelaVisitantes e o campo assunto da tabelaAssunto então o comando getSelectItem não da ja que retorna o nome e gostaria de gravar os Ids destes campos.

Obs: vi no forum o comando Inner join entretanto não consigui utiliza-lo corretamente.

Grato desde já.

7 Respostas

ViniGodoy

Carregue seus combobox com o objeto inteiro, Visitante. E não simplesmente com o nome dele.
Você tem uma classe de negócio para cada um desses dados, não tem?

Murillo_Pontes

Alguem me ajuda por favor

Murillo_Pontes
ViniGodoy:
Carregue seus combobox com o objeto inteiro, Visitante. E não simplesmente com o nome dele. Você tem uma classe de negócio para cada um desses dados, não tem?

Não entendi!!

Pra carregar o comboBox eu dou um select na tabela Visitantes inteira ai jogo apenas o campo nome no comboBox como no codigo.

public void mostrarDadosVisitantes() throws SQLException{
        
        try{
            conGerarProtocolo.execute("SELECT * FROM tabelaVisitantes ORDER BY nome");
            String visitante;
            
            while (conGerarProtocolo.resultset.next()){
                visitante = conGerarProtocolo.resultset.getString("nome");
                comboBoxNome.addItem(visitante);
            }
        }
        catch (Exception erro){
            JOptionPane.showMessageDialog(null,"Erro ao carrega dados no comboBox Visitantes telaCadastroProtocolos: "+ erro);
        }
    }
ViniGodoy

Você precisa criar uma classe para guardar seu visitante:

public class Visitante {
    private int id;
    private String nome;

    public Visitante(int id, String nome) {
        this.id = id;
        this.nome = nome;
    }
    public int getId() { return id; }
    public String getNome() { return nome; }
    public String toString() { return getNome(); }
}
Depois, vc carrega os dados do banco para essa classe:
try{  
         conGerarProtocolo.execute("SELECT * FROM tabelaVisitantes ORDER BY nome");  
           
         while (conGerarProtocolo.resultset.next()){  
             Visitante visitante = new Visitante(
                conGerarProtocolo.resultset.getInt("id"),
                conGerarProtocolo.resultset.getString("nome"));  
             comboBoxNome.addItem(visitante);  
         }  
     }  
     catch (Exception erro){  
         JOptionPane.showMessageDialog(null,"Erro ao carrega dados no comboBox Visitantes telaCadastroProtocolos: "+ erro);  
     }  
 }

Aí, quando vc pegar o dado de dentro da combo, não vai ser simplesmente o nome. Vai ser um visitante inteiro. E ele tem o nome e o id juntos:

Visitante visitante = (Visitante) comboBoxNome.getSelectItem();
ViniGodoy

tsc…tsc…tsc… ficar insistindo em pleno sábado, e menos de uma hora depois de postar a dúvida?
Evite ficar upando tópicos!

Murillo_Pontes

Foi mal!!! É que como so tenho o fim de semana para aprender e tirar duvidas, ai se sabe né.

Bom vo tentar fazer do jeito q vc indicou e se não der certo prometo não oportunar ++.

De qualquer maneira muito obrigado amanhã eu posto o resultado, obrigado.

ViniGodoy

Bom, se não der certo, pode voltar. Mas a dica é sempre construir um bom modelo de classes de negócio, antes de começar a colocar coisas na tela.

Criado 8 de maio de 2010
Ultima resposta 9 de mai. de 2010
Respostas 7
Participantes 2