Pesquisa para a JTable

Alguem poderia me ajudar a criar uma linha de codigo q puxe o valor no JTextField para mostrar numa tabela…

campos da tabela: codigo, material, precototal, quantidade, data

radio button para opção de pesquisa: rb_material e rb_data

valores a serem puxados: material e data

conexão de banco de dados: MS Access que por sinal ja está criada…

agradecida

ahhhh qndo se puxa do JTextField ele compara com o q tem na tabela do banco de dados Access q criei…

dai mostra na tabela

ninguem tem alguma ideia de como eu posso fazer para criar essa pesquisa???

Voce poderia explicar melhor o seu problema?

O que vc deseja é sincronizar seu JTextField com a tuplas do banco, e com determinar objeto saber atribuir, é isso?

Att…

Boa Tarde srta …

Não sei se é a melhor forma mas eu faço assim …

Eis minha Fábrica de Conexão

[code]package br.com.cleyson.jdbc.dao.conexao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class FabricaConexao {

private Connection con = null;

public Connection abrirConexao() throws ClassNotFoundException, SQLException{

    String local = System.getProperty("user.dir");
           local += "\Orçamento.mdb";

    // Carregando o driver JdbcOdbcDriver
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");

    // Abrindo uma Connection. Note que o nome do driver deve
    // ser o mesmo disponivel parametro DBQ que indica
    // o local do arquivo. Eis o pulo do gato. :-)
    con = DriverManager.getConnection("jdbc:odbc:Driver=" + 
            "{Microsoft Access Driver (*.mdb)};" + 
            "DBQ=" + local ,"","");
    return con;

}//AbreConexao

} [/code]

Panel com Campo de Pesquisa - Possui um Combo para Determinar qual o item de Pesquisa
É passado de Parametro um objeto JPanel

private void filtrarDET(java.awt.event.KeyEvent evt) { getJCBTipoEscolha().getSelectedItem(); new DETDAO().filtraDET(this); }

Pesquisa com o Banco de Dados

[code]public void filtraDET(PanelManipulador panel) {
try {

        //Modelo da Tabela
        DefaultTableModel modelo = (DefaultTableModel) panel.getJTDados().getModel();
        //Seta Dados como Vazios
        modelo.setRowCount(0); 
        
        //fazer conexao
        conexao = fabricaConexao.abrirConexao();
        String query = "SELECT * FROM tblDadosDET WHERE " + panel.getJCBTipoEscolha().getSelectedItem() + " LIKE ?";
        PreparedStatement stmt = this.conexao.prepareStatement(query);
        stmt.setString(1, panel.getJTFValor().getText() + "%");
        //Carrega Dados na Memória
        ResultSet rs = stmt.executeQuery(); 

        while(rs.next())
            {
              //Gravando Dados na Tabela  
              modelo.addRow(new Object[]{rs.getString("DET"), rs.getString("Status"),rs.getString("NParcial") ,
               rs.getString("NomeObra"),rs.getString("Lote"),rs.getString("Cidade"),rs.getString("Modelo") });
            }    
        
        //Preenche Campo com Qtde de Registros Encontrados
        panel.getJLQtdeRegistro().setText(Integer.toString(modelo.getRowCount()));
        
        //fechar conexão
        stmt.close();
        
    } catch (ClassNotFoundException ex) {
        JOptionPane.showMessageDialog(null, "Classe ODBC não encontrada!");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Instrução SQL Errada!");
    } catch (Exception ex) {
        JOptionPane.showMessageDialog(null, "Erro Geral!");
    } finally {
        try {
            //Encerra Conexão
            conexao.close();
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não conseguiu finalizar conexão!!");
        }
    }
} 

[/code]

Se não ajudar pelo menos te complicar mais vai …kkk

Boa Sorte
Cleyson Cloves do Carmo

O negocio é vc mostra a parte do seu codigo que vc precisa modificar e explicar melhor sua pergunta ai quem sabe talvez…

Meu código é esse…

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * RegistroMateriaisComprados.java
 *
 * Created on 19-giu-2009, 17:05:32
 */

package Utilitarios;
import BancoDeDados.Conexao;
import java.sql.SQLException;
import javax.swing.table.DefaultTableModel;
import javax.swing.JOptionPane;

/**
 *
 * @author Aluno-A2
 */
public class RegistroMateriaisComprados extends javax.swing.JFrame {
Conexao con_CompraMaterial;
    /** Creates new form RegistroMateriaisComprados */
    public RegistroMateriaisComprados()  {
        initComponents();
        con_CompraMaterial = new Conexao();
        con_CompraMaterial.conecta();
        con_CompraMaterial.executeSQL("select * from CompraMaterial");
        preencher_jtable();
        

    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        jMenuBar2 = new javax.swing.JMenuBar();
        jMenu5 = new javax.swing.JMenu();
        jMenu6 = new javax.swing.JMenu();
        jPanel1 = new javax.swing.JPanel();
        jLabel1 = new javax.swing.JLabel();
        jTextField1 = new javax.swing.JTextField();
        jLabel2 = new javax.swing.JLabel();
        jTextField2 = new javax.swing.JTextField();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jMenuBar1 = new javax.swing.JMenuBar();
        jMenu4 = new javax.swing.JMenu();
        jMenu7 = new javax.swing.JMenu();

        jMenu5.setText("File");
        jMenuBar2.add(jMenu5);

        jMenu6.setText("Edit");
        jMenuBar2.add(jMenu6);

        setTitle("Registro dos Materias Comprados");
        setResizable(false);

        jPanel1.setBackground(new java.awt.Color(204, 204, 204));

        jLabel1.setText("Procurar:");

        org.jdesktop.layout.GroupLayout jPanel1Layout = new org.jdesktop.layout.GroupLayout(jPanel1);
        jPanel1.setLayout(jPanel1Layout);
        jPanel1Layout.setHorizontalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jLabel1)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 120, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(18, 18, 18)
                .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 123, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .add(138, 138, 138)
                .add(jLabel2)
                .add(59, 59, 59))
        );
        jPanel1Layout.setVerticalGroup(
            jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, jPanel1Layout.createSequentialGroup()
                .addContainerGap(23, Short.MAX_VALUE)
                .add(jPanel1Layout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)
                    .add(jTextField1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                    .add(jLabel1)
                    .add(jTextField2, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE))
                .addContainerGap())
            .add(jPanel1Layout.createSequentialGroup()
                .addContainerGap()
                .add(jLabel2)
                .addContainerGap(42, Short.MAX_VALUE))
        );

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null},
                {null, null, null, null, null}
            },
            new String [] {
                "codigo", "material", "precototal", "quantidade", "data"
            }
        ));
        jScrollPane1.setViewportView(jTable1);

        jMenuBar1.setBackground(new java.awt.Color(255, 255, 255));

        jMenu4.setBackground(new java.awt.Color(255, 255, 255));
        jMenu4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Utilitarios/imprimir.JPG"))); // NOI18N
        jMenuBar1.add(jMenu4);

        jMenu7.setBackground(new java.awt.Color(255, 255, 255));
        jMenu7.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Utilitarios/Sair.JPG"))); // NOI18N
        jMenu7.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mousePressed(java.awt.event.MouseEvent evt) {
                jMenu7MousePressed(evt);
            }
        });
        jMenuBar1.add(jMenu7);

        setJMenuBar(jMenuBar1);

        org.jdesktop.layout.GroupLayout layout = new org.jdesktop.layout.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(org.jdesktop.layout.GroupLayout.TRAILING, jScrollPane1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE)
            .add(jPanel1, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 542, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)
            .add(layout.createSequentialGroup()
                .add(jPanel1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED)
                .add(jScrollPane1, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 248, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE)
                .addContainerGap(41, Short.MAX_VALUE))
        );

        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        setBounds((screenSize.width-550)/2, (screenSize.height-425)/2, 550, 425);
    }// </editor-fold>                        

    private void jMenu7MousePressed(java.awt.event.MouseEvent evt) {                                    
        dispose();
        // TODO add your handling code here:
    }                                   

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new RegistroMateriaisComprados().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JMenu jMenu4;
    private javax.swing.JMenu jMenu5;
    private javax.swing.JMenu jMenu6;
    private javax.swing.JMenu jMenu7;
    private javax.swing.JMenuBar jMenuBar1;
    private javax.swing.JMenuBar jMenuBar2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField1;
    private javax.swing.JTextField jTextField2;
    // End of variables declaration                   
public void preencher_jtable()
    {
        jTable1.getColumnModel().getColumn(0).setPreferredWidth(20);
        jTable1.getColumnModel().getColumn(1).setPreferredWidth(150);
        jTable1.getColumnModel().getColumn(2).setPreferredWidth(20);
        jTable1.getColumnModel().getColumn(3).setPreferredWidth(20);
        jTable1.getColumnModel().getColumn(4).setPreferredWidth(20);

        DefaultTableModel modelo = (DefaultTableModel)jTable1.getModel();
        modelo.setNumRows(0);

        try
        {

           while (con_CompraMaterial.resultset.next())
                 modelo.addRow(new Object [] {con_CompraMaterial.resultset.getString("codigo"),
                 con_CompraMaterial.resultset.getString("material"),
                 con_CompraMaterial.resultset.getString("precototal"),
                 con_CompraMaterial.resultset.getString("quantidade"),
                 con_CompraMaterial.resultset.getString("data")});
                 con_CompraMaterial.resultset.first();
         }
         catch (SQLException erro){
             JOptionPane.showMessageDialog(null,"Erro ao listar no JTable ");

    }
}
}

E essa eh minha conexão com o banco de dados Access a qual criei em outra classe para puxar na de cima


package BancoDeDados;
import java.sql.*;
import javax.swing.*;

public class Conexao
{

    public static void setResultSet(String string) {
        throw new UnsupportedOperationException("Not yet implemented");
    }
        final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
        // efetua conexão com diversos bancos
        final private String url = "jdbc:odbc:Recibras";
        final private String usuario = "";
        final private String senha = "";
        private Connection conexao;
        public Statement statement;
        public ResultSet resultset;

       public boolean conecta()
       {
            boolean result = true;
            try
            {
                Class.forName(driver);
                conexao = DriverManager.getConnection(url, usuario, senha);
                //JOptionPane.showMessageDialog(null,"conectou");
            }
            catch(ClassNotFoundException Driver)
            {
               JOptionPane.showMessageDialog(null,"Driver não localizado: "+Driver);
               result = false;
            }
            catch(SQLException Fonte)
            {
                JOptionPane.showMessageDialog(null,"Deu erro na conexão "+
                        "com a fonte de dados: "+Fonte);
                result = false;
            }
            return result;
       }

       public void desconecta()
       {
            boolean result = true;
            try
            {
                conexao.close();
                JOptionPane.showMessageDialog(null,"banco fechado");
            }
            catch(SQLException fecha)
            {
                JOptionPane.showMessageDialog(null,"Não foi possivel "+
                        "fechar o banco de dados: "+fecha);
                result = false;
            }

       }

       public void executeSQL(String sql)
       {
            try
            {
                statement = conexao.createStatement(
                        ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                resultset = statement.executeQuery(sql);
            }
            catch(SQLException sqlex)
            {
               JOptionPane.showMessageDialog(null,"Não foi possível "+
                       "executar o comando sql,"+sqlex+", o sql passado foi "+sql);
            }

       }
}

Obrigada e abraços…

nom teria q fazer um sql com um comparador like para comparar o q tem no banco??? para depois puxar e mostrar no JTable???

brigada e abraços

Bom acredito que o seu caso seria como proceder para realizar uma consulta em no banco de dados baseada em dois parâmetros e colocar o resultado em um JTable certo? Bem em primeiro lugar vi que você esta usando DefaultTableModel, recomendo mudar para AbstractTableModel que é uma classe muito mais interessante de se utilizar quando se manipula dados, você pode implementar métodos especificos que ajudarão a resolver o problema de colocar os dados na JTable, bom aqui mesmo no GUJ tem um tutorial de duas partes explicando isso em detalhes, também pude observar que você cria a conexão com o banco e o sql direto na tela do programa (JFrame), recomendo a leitura do padrão DAO (Data Acess Objects), sendo que o mesmo vai separar a lógica do banco das demais lógicas encontradas, como a lógica da criação da tela por exemplo.
Com relação ao fato de se criar uma sentença SQL para buscar os dados com base em um parâmetro, você esta certa! nesse caso procure passar o resultado da pesquisa (ResultSet) para um javabean representando a tabela de material nesse caso você teria como atributos as colunas da tabela citada.
Desculpe se não coloquei código aqui, mas acredito que se você ler sobre o tutorial de AbstractTableModel e o padrão DAO, você conseguirá resolver seu problema, o que eu tentei fazer aqui foi apontar possíveis caminhos…

Espero ter ajudado :slight_smile:

vo dar uma lida sim… vo ver se consigo fazer a lógica… mas seria bom se eu visse alguma lógica criada por vcs… dai eu modificaria… abraços

alguem tem exemplo ??? por favor

vo tentar fazer hj essa classe no meu curso… obrigada gente

consegui fazer o filtro da tabela… depois jogo o codigo para vcs… brigada e vlw