Salve Galera!
Estou desenvolvendo um sistema com banco PostgreSQL, onde queria ligar um nome listado em um jComboBox que recebe nomes da tabela impressora do banco,e queria que ao se escolher um dos nomes que nele são listado, o id_impressora automaticamente preenche-se o campo fk_impressora na tabela copia do banco com chave estrangeira, porem não consigo inserir esse dados e sempre ficam vazio no banco.
Obs.: Fiz todas as ligações de chaves no banco mais, e já tentei de tudo que me veio em mente até o momento porem esse problema persiste…
Caso alguém possa me ajudar desde já agradeço!!!..
Preciso de mais informações para tentar ajudá-lo.
Primeiro é preciso saber se o problema é na JComboBox ou no código que insere no banco.
Se você colocar o código pode ajudar a responder.
Pode também tentar alguns testes.
Você consegue inserir no banco informando o id_impressora diretamente sem usar a JComboBox?
Como você está inserindo no banco? Está montando o comando SQL no seu código?
[quote=al.barbosa]Preciso de mais informações para tentar ajudá-lo.
Primeiro é preciso saber se o problema é na JComboBox ou no código que insere no banco.
Se você colocar o código pode ajudar a responder.
Pode também tentar alguns testes.
Você consegue inserir no banco informando o id_impressora diretamente sem usar a JComboBox?
Como você está inserindo no banco? Está montando o comando SQL no seu código?[/quote]
Amigo Agradeço sua ajuda!
Agora estou impossibilitado de enviar o código feito até o momento pois não estou com minha maquina, mais veja bem todos os id?s do banco são as chaves primarias elas eu não preciso digitar eu entrar como dados nesse campo a questão é que as chaves estrangeiras pelo pouco que sei também deveria ser atualizadas conforme é adicionado nos campos
Banco tabela impressora
Id_impressora serial
Nome_impressora varchar
Cota_mes varchar
Tabela copia
Id_copia serial
Solicitante varchar
Procedimento varchar
Fk_impressora integer --> que deveria receber a chave primaria da tabela impressora.
Meu jComboBox até então recebe os dados do campo Nome_impressora da tabela impressora
Tenho 2 frames um para o cadastro das impressoras e outro para cadastro das copias
O problema esta no frame de cadastro de copias nele que esta meu jComboBox. consigo gravar todos os dados. Tbm tem demais botões salvar;pesquisar;deletar…etc.
O que quero e Saber como faço para que ao escolher um nome do jcomboBox ele tbm salve o id referente a esse nome na chave estrangeira
Como eu posso fazer isso é no botão salvar o jComboBox
Mais tarde irei postar o código e uma imagens do meu frame.
Att.
Carlos augusto
Carlos Augusto,
Veja se o exemplo abaixo te ajuda:
Você pode criar uma classe Impressora (se não houver). Pode criar uma combobox com um vetor de objetos da classe Impressora. Quando o usuário selecionar uma impressora, pode obter o objeto Impressora da combobox e verificar o id dessa impressora.
Abaixo um código de exemplo de uma combobox de clientes. Utilizo uma classe Cliente, e a combobox é uma JComboBox. O actionListener que é adicionado à combobox exibe o código e o nome do cliente.
No seu caso seria uma JComboBox. Precisaria criar o vetor com o número de impressoras e usar um while para carregar o vetor.
Se você fizer dessa forma, poderá utilizar o id da impressora para gravar na tabela de copia.
[code]import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class TelaCombo extends JFrame{
private JComboBox jcbNome;
private JButton btnLimpar;
public TelaCombo(){
setLayout(new FlowLayout());
final Cliente[] valores = new Cliente[3];
valores[0] = new Cliente(1,"Joao");
valores[1] = new Cliente(2,"Maria");
valores[2] = new Cliente(3,"Rita");
jcbNome = new JComboBox<Cliente>(valores);
ActionListener alCombo = new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcbNomeActionPerformed(evt);
}
};
jcbNome.addActionListener(alCombo);
add(jcbNome);
btnLimpar = new JButton("Limpar");
ActionListener alBotao = new ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt) {
jcbNome.setSelectedIndex(-1);
}
};
btnLimpar.addActionListener(alBotao);
add(btnLimpar);
setSize(300, 150);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
private void jcbNomeActionPerformed(java.awt.event.ActionEvent evt) {
if(evt.getActionCommand().equals("comboBoxChanged")){
if(jcbNome.getSelectedIndex()==-1){
JOptionPane.showMessageDialog(null,"Nada selecionado");
}else{
Cliente cliente = jcbNome.getItemAt(jcbNome.getSelectedIndex());
JOptionPane.showMessageDialog(null,
"Codigo do Cliente: " + cliente.getCodigo() +
" - Nome do Cliente: " + cliente.getNome());
}
}
}
public static void main(String[] args){
TelaCombo tela = new TelaCombo();
tela.setVisible(true);
}
}
class Cliente{
private int codigo;
private String nome;
public Cliente(int codigo, String nome){
this.codigo = codigo;
this.nome = nome;
}
public int getCodigo(){
return codigo;
}
public String getNome(){
return nome;
}
public String toString(){
return nome;
}
}
[/code]
Fera valeu pela ajuda!
Agora Cosegui Fazer Com que de certo!!!.