Author Topic: Filtro en Jtable  (Read 2521 times)

laura_morgar

  • Full Member
  • ***
  • Posts: 123
  • Karma: 0
    • View Profile
Filtro en Jtable
« on: Diciembre 16, 2008, 04:16:42 pm »
Hola a todos, mi problema es que quiero lo siguiente:

Tengo una tabla que podrá tener o no un montón de fila y me gustaría poder realizar un filtro para que muestre sólo las que me interesa. Es decir, yo quiero que inicialmente me salgan todas las líneas de la tabla pero me gustaría poder filtrar para quedarme sólo con las que me interesan, igual que funciona un excel (que pulsas sobre una flechita de la celda y te indica las opciones para filtrar).

He visto que hay clases para realizar filtros en tablas (RowFilter) pero creo que lo que hace es filtrar directamente, no te da la opción de ver todas las filas y luego cuando tú quieras filtrar según una columna que quieras.

¿Alguien sabe si lo que pretendo es posible? En ese caso, ¿Cómo sería?
Muchas gracias de antemano.

luisalb

  • Newbie
  • *
  • Posts: 36
  • Karma: 0
    • View Profile
Re: Filtro en Jtable
« Reply #1 on: Diciembre 27, 2008, 09:30:55 pm »
Hola. No se si te sirva este ejemplo. Yo hice algo parecido.

Tengo un jtable que lleno con los datos de la tabla comprobante, mediante una clase del tipo Object[][] y para realizar la búsqueda mediante los parámetros (tipo de comprobante y numero de comprobante), tengo la siguiente clase:

Code: [Select]
public Object[][] Facturacion_Buscar(int numeroComp, String tipo){
       
        int numComp = 0;
        //CONTAMOS EL NUMERO DE PRODUCTOS DEL DETALLE DE COMPROBANTE
        try{
            Statement stm = con.getConnection().createStatement();
            PreparedStatement pstm = con.getConnection().prepareStatement("SELECT COUNT(PV.ventas_cod_venta) " +
            "AS NUMERO FROM comprobante as C INNER JOIN ventas as V INNER JOIN productos_ventas as PV " +
            "ON C.cod_comprob = V.comprobante_cod_comprob AND V.cod_venta = PV.ventas_cod_venta " +
            "WHERE C.num_comprob = '"+numeroComp+"'"+" GROUP BY PV.ventas_cod_venta");
           
            ResultSet res = pstm.executeQuery();
            res.next();
            numComp = res.getInt("NUMERO");
            res.close();
        }
        catch(SQLException e){
            JOptionPane.showMessageDialog(null,"No se pudo obtener el N°de comprobantes "+e,
                 "Error Comprobantes",JOptionPane.ERROR_MESSAGE);
        }
       
        Object[][] detComp = new Object[numComp][7];
       
        try{
           
            Statement stm = con.getConnection().createStatement();
            PreparedStatement pstm = con.getConnection().prepareStatement("select P.nom_prod, " +
            "V.fecha_venta, PV.tipo_medida, PV.cantidad_medida, PV.precio_unit, PV.descuento, " +
            "PV.subtotal FROM comprobante as C INNER JOIN ventas as V INNER JOIN productos_ventas as PV " +
            "INNER JOIN productos as P ON C.cod_comprob = V.comprobante_cod_comprob " +
            "AND V.cod_venta = PV.ventas_cod_venta AND PV.productos_cod_prod = P.cod_prod " +
            "WHERE C.num_comprob = "+ numeroComp +" AND C.tipo_doc_comprob LIKE '%"+tipo+"%'");
               
            ResultSet res = pstm.executeQuery();
            int i = 0;
           
            while(res.next()){
                String numCompro = res.getString("nom_prod");
                String fecha = res.getString("fecha_venta");
                String tipoMedida = res.getString("tipo_medida");
                int cantidad = res.getInt("cantidad_medida");
                int precio = res.getInt("precio_unit");
                int descuento = res.getInt("descuento");
                int monto = (precio - descuento)*cantidad;
                             
                detComp[i][0] = numCompro;
                detComp[i][1] = fecha;
                detComp[i][2] = tipoMedida;
                detComp[i][3] = cantidad;
                detComp[i][4] = precio;
                detComp[i][5] = descuento;
                detComp[i][6] = monto;
                i++;                                     
           }
            res.close();
           }
           catch(SQLException ex){
               JOptionPane.showMessageDialog(null,"No se puede traer el detalle de comprobantes "+ex,
                   "Error Comprobante",JOptionPane.ERROR_MESSAGE);
           }                       
           return detComp;
        }

Ojala te sirva

« Last Edit: Diciembre 27, 2008, 09:43:35 pm by chuidiang »

 

ey