[RESOLVIDO] Listar Dados da Tabela em JTextField

7 respostas
V

Bom, minha tabela tem apenas 9 colunas, deixei só com as informações básicas do paciente para não deixar a JTable muito grande.

Eu já estou listando todos esses campos e inserindo nos meus 9 JTextFields.

Minha dúvida é: Se eu tenho 9 colunas na tabela da pra setar os outros dados do paciente sem estar nela ?

Ex:

Tenho os campos ID e Nome na tabela, e eu preciso setar nos JTextFields ID, Nome e Cidade. Como eu faço pra fazer isso sem o campo Cidade estar na tabela?

Quando estou selecionando a tabela:
private void jTTabelaLinhaSelecionada(JTable tabela) {

             if (jTTabela.getSelectedRow() != -1) {

        hc.habilitaCampos(pnPaciente);

        //habilitando os botões para fazer as alterações corretamente

        // Habilitando os ComboBox para que seja a atualização
        hcb.habilitaComboBox(pnPaciente);
        
        ctCodigo.setText(String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()));
        ctDtCadastro.setText(listaPaciente.get(tabela.getSelectedRow()).getDataCadastro());
        ctNome.setText(listaPaciente.get(tabela.getSelectedRow()).getNome());
        ctIdade.setText(listaPaciente.get(tabela.getSelectedRow()).getIdade());
        ctCidade.setText(listaPaciente.get(tabela.getSelectedRow()).getCidade());
        ctEmail.setText(listaPaciente.get(tabela.getSelectedRow()).getEmail());
        ctTelResidencial.setText(listaPaciente.get(tabela.getSelectedRow()).getTelResidencial());
        ctTelCelular.setText(listaPaciente.get(tabela.getSelectedRow()).getTelCelular());
        ctTelContato.setText(listaPaciente.get(tabela.getSelectedRow()).getTelContato());
        // Aqui pegar os outros campos que não estão na tabela.
             } else {
            lc.limpaCampos(pnPaciente);
        }
     }
[]'s

7 Respostas

V

Ninguém? D:

L

Bom…teoricamente você busca esses registros de uma base de dados certo?

Uma sugestão…
Em vez de fazer a ação para preencher os seus textfields lendo informações da tabela,
leia somente o id(no seu caso Código) do cliente da sua tabela, depois faça uma consulta no banco de dados e traga todas as informações que você acha necessário

V

Certo…

Daqui a pouco posto o resultado.

[]'s

V

Eu estava fazendo dessa forma, só que assim não retorna os registro que não estão na tabela, quando eu seleciono a primeira linha ele seta os campos da tabela, quando seleciono outra linha os campos ficam com os mesmos valores da primeira linha selecionada.

private void jTTabelaLinhaSelecionada(JTable tabela) {
        Conexao conexao = new Conexao();

        if (jTTabela.getSelectedRow() != -1) {

            hc.habilitaCampos(pnPaciente);
            hcb.habilitaComboBox(pnPaciente);
            try {
                dao.getListaCodigo("%" + String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()) + "%");
                // mostraPesquisa(listaPaciente);
            } catch (SQLException ex) {
                Logger.getLogger(FormPesquisaPaciente.class.getName()).log(Level.SEVERE, null, ex);
            }

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

                lbCodigo.setText(String.valueOf(listaPaciente.get(i).getCodigo()));
                lbDtCadastro.setText(listaPaciente.get(i).getDataCadastro());
                lbNome.setText(listaPaciente.get(i).getNome());
                lbIdade.setText(listaPaciente.get(i).getIdade());
                lbCidade.setText(listaPaciente.get(i).getCidade());
                lbEmail.setText(listaPaciente.get(i).getEmail());
                lbTelResidencial.setText(listaPaciente.get(i).getTelResidencial());
                lbTelCelular.setText(listaPaciente.get(i).getTelCelular());
                lbTelContato.setText(listaPaciente.get(i).getTelContato());
                lbCidade.setText(listaPaciente.get(i).getCidade());
                lbBairro.setText(listaPaciente.get(i).getBairro());
                lbEndereco.setText(listaPaciente.get(i).getEndereco());
                lbCPF.setText(listaPaciente.get(i).getCpf());
                lbRG.setText(listaPaciente.get(i).getRg());
                lbResponsavel.setText(listaPaciente.get(i).getResponsavel());
                lbSexo.setText(listaPaciente.get(i).getSexo());
                lbTipoSanguineo.setText(listaPaciente.get(i).getTipoSanguineo());

        }
        } else {
            lc.limpaCampos(pnPaciente);

        }
    }
E dessa outra forma ele não retorna nenhum registro:
try {
                conexao.getConection();
                Statement stmt = conexao.getConection().createStatement();
                ResultSet rs = stmt.executeQuery("SELECT * FROM paciente WHERE usuario = '" + String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()));
                while (rs.next()) {
                    lbCodigo.setText(String.valueOf(rs.getString("codigo")));
                    ...
                } 
            }catch (SQLException e) {
                
            }
To errando em que parte? D:

[]'s

L
ResultSet rs = stmt.executeQuery("SELECT * FROM paciente WHERE usuario = '" + String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()));

Você tem como chave primária de paciente uma String? a coluna usuário?

se sim, aqui está um erro....

está faltando um ' no fim da string teria que ser assim
ResultSet rs = stmt.executeQuery("SELECT * FROM paciente WHERE usuario = '" + String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()) + "'");

mas se a coluna usuário não for a sua chave primária tem que mudar o seu WHERE para ..... WHERE codigo = " + listaPaciente.get(tabela.getSelectedRow()).getCodigo() ...

Coloque um e.printStackTrace dentro do seu catch que deve mostrar o erro que está acontecendo....certamente é a query do seu sql que está errado

L

Mais uma coisa…se voce usar o “%” na sua query…vai ter que usar o LIKE também na sua query sql…senão ele nunca vai achar a string procurada

V

Nuss que descuido… Tinha aproveitado o código de outra parte do sistema…

Em vez de usuario é codigo…

ResultSet rs = stmt.executeQuery("SELECT * FROM paciente WHERE codigo = " + String.valueOf(listaPaciente.get(tabela.getSelectedRow()).getCodigo()));

:smiley:

Valeu pela ajuda, até mais.

[]'s

Criado 15 de março de 2012
Ultima resposta 16 de mar. de 2012
Respostas 7
Participantes 2