Quantcast
Channel: Programação - GUJ
Viewing all articles
Browse latest Browse all 33093

[Ajuda] Pesquisa com JTable

$
0
0

@Fabiano_Fernandes escreveu:

Galera peço a ajuda de vocês, tenho uma JTable que retorna os valores do Banco de dados, porém quero limitar a pesquisa por exemplo, tenho uma tabela no banco de dados com um número de registros 50 mil por exemplo, Se eu colocar para fazer uma pesquisa de todos os registros, creio que isso causara uma certa lentidão em meu sistema, então gostaria de saber como faço por exemplo para ele listar apenas 20 registros, e para exibir os outros 20 eu pretendo usar um botão, mas não faço ideia de como fazer isso.
Tem como limitar a busca no código SQL porém, não consigo listar os proximo.
Caso não tenha ficado claro, basta dizer que vou tentar explicar melhor.

Obs: estou usando DefaultTableModel

Evento do botão de pesquisa

Log_control PesquisarLog = new Log_control();
List<Log_bean> pesquisaLog = PesquisarLog.ListarLogs(jtf_PesquisarLog.getText() + "%",jtf_PesquisarLog.getText(),jtf_PesquisarLog.getText());
MostrarPesquisaLog(pesquisaLog);

Metodo da classe de controle

public List<Log_bean> ListarLogs (String NomeMed,String Usuario ,String cBarras) throws SQLException{
            List<Log_bean> Registro = new ArrayList();
            AcessoMySql mysql = new AcessoMySql();
            pstm = (PreparedStatement) mysql.conectar().prepareStatement(ConsultaLogs);
            pstm.setString(1, NomeMed);
            pstm.setString(2, Usuario);
            pstm.setString(3, cBarras);
            rs = pstm.executeQuery();
            Log_bean Log;
            while (rs.next()){
                Log = new Log_bean();
                Log.setId_user(rs.getInt("Id_user"));
                Log.setAcao(rs.getString("acao"));
                Log.setData(rs.getDate("DataAtualizacao"));
                Log.setHora(rs.getTime("HORA"));
                Log.setId_med(rs.getInt("id_med"));
                Log.setNome_med(rs.getString("nome_med"));
                Log.setLogin_user(rs.getString("login_user"));
                Log.setId_registro(rs.getInt("id_reg"));
                Log.setTipo(rs.getString("tipo_med"));
                Log.setQuantidade(rs.getString("qtd"));
                Log.setCod_entrada(rs.getInt("ID_ENTRADA"));
                Registro.add(Log);
        }
        mysql.desconectar();
        return Registro;

    }

Metodo para exibir a pesquisa na JTable

private void MostrarPesquisaLogData(List<Log_bean> pesquisa) {
        while (tm_log.getRowCount() > 0) {//TODA VEZZ QUE EFETUAR UMA NOVA PESQUISA..
            tm_log.removeRow(0);         //...IRA LIMPAR A PESQUISA ANTERIOR.
        }
    if (pesquisa.isEmpty()) {//SE O RESULTADO DA PESQUISA FOR VAZIO EXIBE A MSG
        JOptionPane.showMessageDialog(this, "Código de entrada não encontrado. ");
    } else {

        String[] campos = new String[]{null};
        for (int i = 0; i < pesquisa.size(); i++) {
            System.out.println("MOSTRAR LOG NA JTABLE");
            //OBS: TEM QUE TER A MESMA QUANTIA DE CAMPOS DO DEFAULTTABLEMODEL
            tm_log.addRow(campos);//ENQUANTO A CONDIÇÃO FOR VERDADE VAI ADICIONAR UMA LINHA
Date DataLog = pesquisa.get(i).getData();
                SimpleDateFormat formatadata = new SimpleDateFormat("dd/MM/yyy");
                String Data = formatadata.format(DataLog);
                String login = pesquisa.get(i).getLogin_user();
            String acao = pesquisa.get(i).getAcao();
            String nomemed = pesquisa.get(i).getNome_med();
            String tipomed = pesquisa.get(i).getTipo();
            Time Hora = pesquisa.get(i).getHora();
            String qtd = pesquisa.get(i).getQuantidade();
            int cod_entrada = pesquisa.get(i).getCod_entrada();

            System.out.println("codigo entrada =" + cod_entrada);
            System.out.println("quantidade = " + qtd);

            if (acao.equals("INSERT")) {//ALTERTAR DE INSERT PARA ENTRADA NO BD
                tm_log.setValueAt(pesquisa.get(i).getId_registro(), i, 0);
                tm_log.setValueAt((Data), i, 1);
                tm_log.setValueAt("O usuário " + login + " efetuou uma nova entrada do médicamento " + nomemed + " do tipo " + tipomed + " com " + qtd + " unidades no dia " + Data + " as " + Hora, i, 2);

            } else if (acao.equals("Atualiza")) {//ALTERAR DE DELETE PARA SAIDA NO BD
                tm_log.setValueAt(pesquisa.get(i).getId_registro(), i, 0);
                tm_log.setValueAt((Data), i, 1);
                tm_log.setValueAt("O usuário " + login + " atualizou a entrada do médicamento " + nomemed + " do tipo " + tipomed + " no dia " + Data + " as " + Hora + " para " + qtd + " unidades", i, 2);

            } else if (acao.equals("DELET")) {
                tm_log.setValueAt(pesquisa.get(i).getId_registro(), i, 0);
                tm_log.setValueAt((Data), i, 1);
                tm_log.setValueAt("O usuário " + login + " efetuou uma nova saida do médicamento " + nomemed + " do tipo " + tipomed + " com " + qtd + " unidades no dia " + Data + " as " + Hora, i, 2);

            } else {
                tm_log.setValueAt(pesquisa.get(i).getId_registro(), i, 0);
                tm_log.setValueAt((Data), i, 1);
                tm_log.setValueAt("O usuário " + login + " atualizou a saida do médicamento " + nomemed + " do tipo " + tipomed + " no dia " + Data + " as " + Hora + " para " + qtd + " unidades", i, 2);

            }
        }
    }

}

Mensagens: 1

Participantes: 1

Ler tópico completo


Viewing all articles
Browse latest Browse all 33093


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>