style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

ELIMINAR DATOS DE UN JTABLE Y VOLVER HACER UNA BUSQUEDA

Buenos dias:

Para realizar una busqueda en una table de MySQL, pulso el botón Buscar, me muestra una JDialog para seleccionar el va01 y llama al método siguiente para mostrar un Jtable:

void CargarTablaFicha(){
//Para poner los títulos de la tabla
String[] titulos = {"Id","CULTIVO", "POSOLOGIA", "D. MINIMA", "D. MAXIMA", "PLAZO SEGURIDAD", "OBSERV.?"};
//Para agregar los elementos de la tabla
String[] registro = new String[7];
modelo = new DefaultTableModel(null, titulos);
//Para establecer la conexión
ConexionMySQL mysql = new ConexionMySQL();
Connection cn = mysql.Conectar();
//Crea la consulta MySQL
//JOptionPane.showMessageDialog(null, "El nº de produco es: " + va35);
sSQL = "SELECT Id, Cultivo, Posol, Dosis1, Dosis2, Plazo, A2 FROM producto WHERE NProdFito = '" + va01+ "' AND Clase = 'I' ORDER BY Cultivo, Posol";
try {
Statement st = cn.createStatement();
ResultSet rs = st.executeQuery(sSQL);
while(rs.next()){
registro[0] = rs.getString("Id");
registro[1] = rs.getString("Cultivo");
registro[2] = rs.getString("Posol");
registro[3] = rs.getString("Dosis1");
registro[4] = rs.getString("Dosis2");
registro[5] = rs.getString("Plazo");
registro[6] = rs.getString("A2");
modelo.addRow(registro);
}
//Se agregan los datos a la tabla
tblConsulta.setModel(modelo);
rs.close();
}
catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}

Hasta aquí todo correcto.

Si vuelvo a pulsar el botón buscar, hace la selección del Id pero me sigue mostrando los datos de la primera búsqueda.

Incorporo otro método que se acciona con el botón de cancelar y activa el método:

public void eliminar(){
DefaultTableModel tb = (DefaultTableModel) Jtable.getModel();
int a = JtablegetRowCount()-1;
for (int i = a; i >= 0; i--) {
tb.removeRow(tb.getRowCount()-1); // o con “modelo.removeRow(0);” o con
// “modelo.setNumRows(0);” también funciona
}
//cargaTicket();
}

Con este método, borra los datos de la JTable pero cuando hago otra búsqueda no carga ningún dato en la JTable.

¿ Me podeis indicar que falta en el método o como poderlo solucionar ?

Gracias anticipadas y saludos.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Livio

Yo lo hago así...

Hace algún tiempo lo hice en tres pasos:

1 > Este método Object consulta un procedure que filtra los datos de la tabla. Observa que el retur un es un objeto Data[][]

     public Object [][] filtrarClaveUnidad33 (String nombreClave){
        int registros = 1;
        try{
         CallableStatement contador = (CallableStatement) conexionServidor.getConnection().prepareCall("CALL crud_claveunidad(?,?,?,?,?, ?,?);");
                contador.setString(1, null); //idclav_unid
                contador.setString(2, null);//clave_unidad
                contador.setString(3, nombreClave);//nombre_clave
                contador.setString(4, null);//descripcion                
                contador.setString(5, null);//descripcion                
                contador.registerOutParameter(6,Types.INTEGER);//total de la busqueda
                contador.setString(7,"3");//Operaci0n: 2: Se cuentan los registros y se muestran todos los registros                
                contador.execute();
                registros = contador.getInt(6);
                contador.close();
                System.err.println("Filas: "+registros);
                }catch(SQLException e){        
         System.out.println("Error en el count mostrarClaveUnidad "+e);
      }//fin del try
    Object[][] data = new String[registros][4];//6 es el numero de columnas que salen en el tipoDocumento de la consulta
    //realizamos la consulta sql y llenamos los datos en "Object"
      try{
CallableStatement resultadoBusquedaPorNombre = (CallableStatement) conexionServidor.getConnection().prepareCall("CALL crud_claveunidad(?,?,?,?,?, ?,?);");
                resultadoBusquedaPorNombre.setString(1, null); //idclav_unid
                resultadoBusquedaPorNombre.setString(2, null);//clave_unidad
                resultadoBusquedaPorNombre.setString(3, nombreClave);//nombre_clave
                resultadoBusquedaPorNombre.setString(4, null);//descripcion                
                resultadoBusquedaPorNombre.setString(5,null);//el total de clientes
                resultadoBusquedaPorNombre.setString(6,null);//total de resultados
                resultadoBusquedaPorNombre.setString(7,"3");//Operaci0n: 2: Se cuentan los registros y se muestran todos los registros                
                resultadoBusquedaPorNombre.execute();
                ResultSet res = resultadoBusquedaPorNombre.getResultSet();                
          int i = 0;
         while(res.next()){
            String idclav_unid_  = res.getString("idclav_unid");
            String clave_unidad_ = res.getString("clave_unidad");
            String nombre_clave_ = res.getString("nombre_clave");
            String descripcion_ = res.getString("descripcion");                      
           
            data[i][0] = idclav_unid_;
            data[i][1] = clave_unidad_;
            data[i][2] = nombre_clave_;
            data[i][3] = descripcion_;
            i++;
            //encontrados++;//variable que se incrementa con cada registro encontrado, y asi poder mandar la cantidad
            //de resultados en el JOption
         }//del while        

         res.close();
          }catch(SQLException e){
         System.out.println(e);
         System.out.println("Error del while mostrarClaveUnidad");
    }//del try

    return data;
    }

2>> Este método va en la clase que contenga la tabla

    void filtrarClaves(String clave){
        String [] columNames = {"Id","Clave unidad","Nombre","Descripcion"};      
        dtConsulta = consultasALaBase.filtrarClaveUnidad33(clave);
        DefaultTableModel datos = new DefaultTableModel(dtConsulta, columNames);
        clave_unidad_jTable.setModel(datos);
        anchoColumnas();//metodo que customiza el ancho de las columnas de x tabla
        clave_unidad_jTable.setAutoCreateRowSorter(true);
        clave_unidad_jTable.setAutoResizeMode(JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS);
       
    }

3>>Finalmente en un textfield donde el usuario coloca el texto a buscar:

    private void queBuscar_txtKeyReleased(java.awt.event.KeyEvent evt) {                                          
        // TODO add your handling code here:
       
            filtrarClaves(queBuscar_txt.getText());
            if (clave_unidad_jTable.getRowCount() == 0) {
                JOptionPane.showMessageDialog(null, "¡¡No se  encontraron resultados!!");
            }            
       
    }        

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">