jTabel não Carrega Dados

2 respostas
rolipam

Olá Galera, olha eu aqui 'travez …

Bem … é o seguinte … Estou desenvolvendo uma aplicação (sob encomenda) para o agendamento se diversos serviços (com data e hora marcada). Graças a DEUS o problema com as Datas eu já solucionei, mas agora estou enfrentando mais um. Possuo em meu banco de dados (PostgreSQL) as seguintes tabelas: clientes, funcionários, servicos, usuarios e agendas. a tabela usuarios possui como chave estrangeira o id dos funcionários e a tabelas agendas possui como chaves estrangeiras os códigos do cliente, do funcionario, do usuario, do serviço. Criei uma tabela para capturar a data, a hora (salvos na tabela agendas) e o nome do cliente, a descrição do serviço e o nome do funcionário que irá executar o serviço, porém esses 3 últimos não estou conseguindo recuperar, preciso de uma ajuda dos colegas mais experientes, pois não tenho a mínima ideia de como fazê-lo. Segue abaixo os códigos da Classe Control (Responsável pelos comandos SQL) …

String consultaRegistroData = "select * from agendas where data = ? order by data, hora";
    String consultaRegistroCliente = "select * from agendas, clientes where agendas.codcliente = clientes.codigo and clientes.nome like ? order by data";
    String consultaRegistroProfissional = "select * from agendas, funcionarios where agendas.codprofissional = funcionarios.id and funcionarios.nome like ? order by data";

    public List<AgendaBean> listarAgendasData(Date data) {
        List<AgendaBean> agendas = new ArrayList();
        try {
            ConexaoBD con = new ConexaoBD();
            pstm = con.conecta().prepareStatement(consultaRegistroData);
            pstm.setDate(1, data);
            rs = pstm.executeQuery();
            while (rs.next()) {
                ag = new AgendaBean();
                ag.setData(rs.getString("data"));
                ag.setHora(rs.getString("hora"));
                ag.setCodcliente(rs.getInt("codcliente"));
                ag.setCodservico(rs.getInt("codservico"));
                ag.setCodprofissional(rs.getInt("codprofissional"));
                ag.setCodfuncionario(rs.getInt("codfuncionario"));
                ag.setModalidade(rs.getString("modalidade"));

                agendas.add(ag);
                con.desonecta();
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não Existe Registro!" + e);
            e.printStackTrace();
        }
        return agendas;

    }

    public List<AgendaBean> listarAgendasCliente(String nome) {
        List<AgendaBean> agendas = new ArrayList();
        //List<ClienteBean> clientes = new ArrayList();
        //List<ServicoBean> servicos = new ArrayList();
        //List<FuncionarioBean> funcionarios = new ArrayList();
        try {
            ConexaoBD con = new ConexaoBD();
            pstm = con.conecta().prepareStatement(consultaRegistroCliente);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();         

            while (rs.next()) {
                ag = new AgendaBean();
                //cb = new ClienteBean();
                //fb = new FuncionarioBean();
               //sb = new ServicoBean();
                
                ag.setData(rs.getString("data"));
                ag.setHora(rs.getString("hora"));            
                //ag.setCodcliente(rs.getInt("codcliente"));
                //cb.setNome(rs.getString("nome"));
                //ag.setCodservico(rs.getInt("codservico"));
                //sb.setDescricao(rs.getString("descricao"));
                //ag.setCodprofissional(rs.getInt("codprofissional"));
                //fb.setNome(rs.getString("nome"));
                //ag.setCodfuncionario(rs.getInt("codfuncionario"));
                //fb.setNome(rs.getString("nome"));
                //ag.setModalidade(rs.getString("modalidade")); 

                agendas.add(ag);
                //clientes.add(cb);
                //servicos.add(sb);
                //funcionarios.add(fb);
                
                con.desonecta();
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não Existe Registro!" + e);
        }
        return agendas;

    }

    public List<AgendaBean> listarAgendasProfissional(String nome) {
        List<AgendaBean> agendas = new ArrayList();
        try {
            ConexaoBD con = new ConexaoBD();
            pstm = con.conecta().prepareStatement(consultaRegistroProfissional);
            pstm.setString(1, nome);
            rs = pstm.executeQuery();           

            while (rs.next()) {
                ag = new AgendaBean();
                ag.setData(rs.getString("data"));
                ag.setHora(rs.getString("hora"));
                //ag.setCodcliente(rs.getInt("codcliente"));
                //ag.setCodservico(rs.getInt("codservico"));
                //ag.setCodprofissional(rs.getInt("codprofissional"));
                //ag.setCodfuncionario(rs.getInt("codfuncionario"));
                //ag.setModalidade(rs.getString("modalidade"));

                agendas.add(ag);
                con.desonecta();
            }
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, "Não Existe Registro!" + e);
        }
        return agendas;

    }

e da Classe Principal …

private void buscaRegistro() {
        AgendaControl c = new AgendaControl();
        if (rbData.isSelected()) {
            String dataString = tfPesquisaData.getText().trim();
            java.sql.Date d;
            try {
                d = new java.sql.Date(df.parse(dataString).getTime());
                agendas = c.listarAgendasData(d);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }  
        } else if (rbCliente.isSelected()) {
            agendas = c.listarAgendasCliente("%" + tfPesquisaCliente.getText().trim() + "%");
        } else if (rbProfissional.isSelected()) {
            agendas = c.listarAgendasProfissional("%" + tfPesquisaProfissinal.getText().trim() + "%");
        }
        mostrarAgenda(agendas,clientes, servicos, funcionarios);
    }

    private void mostrarAgenda(List<AgendaBean> agendas, List<ClienteBean> clientes, List<ServicoBean> servicos, List<FuncionarioBean> funcionarios) {

        while (tmAgenda.getRowCount() > 0) {
            tmAgenda.removeRow(0);
        }
        if (agendas.size() == 0) {
            JOptionPane.showMessageDialog(this, "Nenhum Agendamento Encontrado!");
        } else { 
        }
        String[] campos = new String[]{null, null, null, null, null};
        for (int i = 0; i < agendas.size() ; i++) {
            
            tmAgenda.addRow(campos);
            try {
                tmAgenda.setValueAt(df.format(sdf.parse(agendas.get(i).getData())), i, 0);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            try {
                tmAgenda.setValueAt(hf.format(hf.parse(agendas.get(i).getHora())), i, 1);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
            //tmAgenda.setValueAt(clientes.get(i).getNome(), i, 2);
            //tmAgenda.setValueAt(funcionarios.get(i).getNome(), i, 4);
            //tmAgenda.setValueAt(funcionarios.get(i).getNome(), i, 4);

            
        }
    }

Segue também a tela que foi desenvolvida (mostrando o problema)


2 Respostas

rolipam

Gente !!! Alguém tem alguma ideia ou solução para o meu caso. Já tentei tudo que estava dentro dos meus conhecimentos e toda vez que modifico algo no código, ocorre algum erro ou então a tabela preenche dezenas de linhas com as datas e as horas, mas nunca com os nomes dos clientes, a descrição dos serviços e o nome do profissional. Aproveitando a deixa … Conforme mostrado na figura é possível consultar o cliente, o serviço, o profissional e o usuário no botão (…) que abre um grid contendo todos os registros. Atualmente esse grid só serve para fazer a consulta mesmo, mas gostaria de saber como fazer para qdo selecionar uma linha nesse grid, ele jogue o código no textField correspondente. Outro acerto que também preciso fazer é com relação à formatação dos valores dos serviços qdo recuperados no banco de dados, pois mesmo criando os campos como double, valores como “25.50” retornam apenas “25.5”. fiz uma “gambiarra” inserindo uma String “R$” antes do valor e outra “0” após o valor, mas se por exemplo o valor for “25.55” o campo preenche como “25.550”. E gostraia ainda de uma forma de substituir o (.) pela (,), pois fica mais “bonito”, já que estamos acostumados a lidar com números decimais com a (,) desde crianças. Agradeço a todos que puderem me ajudar (ainda tenho uns 30 dias de prazo para entregar o sistema, mas ainda falta implementar os relatórios e o backup).

rolipam

Preencher a jTable eu já consegui. Mas agora qdo pesquiso por cliente ou por profissional a tabela preenche todos os clientes e profissionais, mas acho que vou ter que dar um jeito sozinho mesmo. Qto às outras pendências, se alguém ainda quiser dar uma ajudinha, eu agradeço.

Criado 14 de abril de 2012
Ultima resposta 15 de abr. de 2012
Respostas 2
Participantes 1