En un jInternalFrame realizo una consulta a una base de datos Firebird para obtener registros entre 2 fechas, las 2 fechas las obtengo desde 2 JXDatePicker... con eso consigo extraer los datos que necesito de manera sencilla.
El problema que me trae es que dentro de ese rango de fechas obtengo al menos 100 registros, por ejemplo, y lo que quiero es colocarle un buscador que me filtre los nombres si es que existen o por número de recibos, pero dentro de esa misma búsqueda.
Es decir, traer datos entre el 05/12/2014 y el 08/01/2015 y vengan por ejemplo
RECIBO | NOMBRE
2369 | José Giménez
3697 | Mario Santacruz
Y así los que haya... como serán muchos registros, que los usuarios puedan de nuevo filtrar los datos que existen y que coloquen "JOS" o "MARI" o "236" y me filtre al instante los nombre o los recibos que coincidan con los STRING introducidos a partir de 3 caracteres...
Estoy trabajando con Netbeans... les dejo por ejemplo el método con el que traigo los resultados a partir de las fechas...
OBTENER COBROS
Código Java:
Ver original
private void obtenerCobros() { if (comprobarFechas()) { // limpiamos la tabla de todo posible dato que haya encontrado previamente limpiarTabla(); // formateamos las fechas para la salida en la jTable // formatemamos las fechas para la consulta a la BD // obtenemos el valor del combo -- ESTE OBJETO LO CREAMOS EN LOS POJOS ItemCombo itc = (ItemCombo) this.vista.getCmbsede().getSelectedItem(); // inicializamos los valores de las variables de fecha String sql; int contador = 0; // inicializo la propiedad SQL // LES DEJO LAS \n PARA CUANDO IMPRIMA EN LA CONSOLA DETECTAR MAS FACIL ALGUN POSIBLE ERROR sql = "select co.cob_fecha_imp, \n" + "co.cob_nrorecibo, \n" + "per.per_ci, \n" + "upper(per.per_nombre || ' ' || per.per_apellido) as Cliente, \n" + " cd.COBDET_NROCUOTA, \n" + "cd.cobdet_capiatl, \n" + "cd.cobdet_interes, \n" + "cd.cobdet_mora, \n" + "(cd.cobdet_capiatl+cd.cobdet_interes+cd.cobdet_mora)as Total, \n" + " tiop.descripcion as Tipo, \n" + "forcob.descripcion as Forma, \n" + "co.COB_NROCOMPROBANTE \n" + "from cobro as co \n" + "inner join cobro_detalle as cd ON co.idcobro = cd.idcobro \n" + "inner join cliente as cli ON co.idcliente = cli.idcliente \n" + "inner join persona as per ON cli.idpersona = per.idpersona \n" + "inner join tipo_operacion as tiop ON co.idtipooperacion = tiop.idtipooperacion \n" + "inner join forma_cobro as forcob ON co.idformacobro = forcob.idformacobro \n" + "where (co.cob_fecha_imp>='" + fechaDesde + "' and co.cob_fecha_imp<='" + fechaHasta + "') \n" + "ORDER BY co.cob_fecha_imp DESC \n \n"; //ejecuto con mi framework la sentencia SQL if (this.con.ejecutar(sql) > 0) { // creo mi Resultset try { while (rs.next()) { contador++; // obtengo los datos de mi resulset para introducirlos a mi modelo de tabla fechas.format(rs.getDate("cob_fecha_imp")), rs.getInt("cob_nrorecibo"), Numeros.convertir(Numeros.getString(rs.getInt("per_ci"))), rs.getString("Cliente"), rs.getInt("COBDET_NROCUOTA"), Numeros.convertir(Numeros.getString(rs.getInt("cobdet_capiatl"))), Numeros.convertir(Numeros.getString(rs.getInt("cobdet_interes"))), Numeros.convertir(Numeros.getString(rs.getInt("cobdet_mora"))), Numeros.convertir(Numeros.getString(rs.getInt("Total"))), rs.getString("Tipo"), rs.getString("Forma") }); } } }// fin if ejecutar if (contador > 0) { // habilito el campo de busqueda this.vista.getTxtbuscarpor().setEnabled(true); this.vista.getTxtbuscarpor().requestFocus(); } else { limpiarTabla(); this.vista.getTxtbuscarpor().setText(""); this.vista.getTxtbuscarpor().setEnabled(false); JOptionPane.showMessageDialog(vista, "No existen registros entre las fechas " + fechaDesde + " y " + fechaHasta); } // asigno el modelo a mi jtable this.vista.getTbcobros().setModel(table); } else { limpiarConsultaCobros(); "Debe seleccionar las fechas a filtrar", "Datos requeridos", } }
Con el boton de consultar llamo al método
Código Java:
Ver original
@Override if (evt.getSource() == this.vista.getBtnlimpiar()) { this.limpiarConsultaCobros(); } if (evt.getSource() == this.vista.getBtnbuscar()) { this.obtenerCobros(); } }
Espero puedan darme una manita en esto. Aunque no es algo muy complejo, me tiene un poco perdido. Gracias