Foros del Web » Programación para mayores de 30 ;) » Java »

Filtrar datos a partir de una consulta a base de datos ya realizada

Estas en el tema de Filtrar datos a partir de una consulta a base de datos ya realizada en el foro de Java en Foros del Web. Buenas, a ver si pueden darme una mano. En un jInternalFrame realizo una consulta a una base de datos Firebird para obtener registros entre 2 ...
  #1 (permalink)  
Antiguo 19/01/2015, 14:20
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Filtrar datos a partir de una consulta a base de datos ya realizada

Buenas, a ver si pueden darme una mano.

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
  1. private void obtenerCobros() {
  2.         if (comprobarFechas()) {
  3.             // limpiamos la tabla de todo posible dato que haya encontrado previamente
  4.             limpiarTabla();
  5.  
  6.             DefaultTableModel table = (DefaultTableModel) this.vista.getTbcobros().getModel();
  7.             // formateamos las fechas para la salida en la jTable
  8.             SimpleDateFormat fechas = new SimpleDateFormat("dd-MM-yyyy");
  9.  
  10.             // formatemamos las fechas para la consulta a la BD
  11.             SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");
  12.  
  13.             // obtenemos el valor del combo -- ESTE OBJETO LO CREAMOS EN LOS POJOS
  14.             ItemCombo itc = (ItemCombo) this.vista.getCmbsede().getSelectedItem();
  15.  
  16.             // inicializamos los valores de las variables de fecha
  17.             String fechaDesde = sdf.format(this.vista.getTxtfechadesde().getDate());
  18.             String fechaHasta = sdf.format(this.vista.getTxtfechahasta().getDate());
  19.            
  20.             String sql;
  21.             int contador = 0;
  22.             // inicializo la propiedad SQL
  23. // LES DEJO LAS \n PARA CUANDO IMPRIMA EN LA CONSOLA DETECTAR MAS FACIL ALGUN POSIBLE ERROR
  24.             sql = "select co.cob_fecha_imp, \n"
  25.                     + "co.cob_nrorecibo, \n"
  26.                     + "per.per_ci, \n"
  27.                     + "upper(per.per_nombre || ' ' || per.per_apellido) as Cliente, \n"
  28.                     + " cd.COBDET_NROCUOTA, \n"
  29.                     + "cd.cobdet_capiatl, \n"
  30.                     + "cd.cobdet_interes, \n"
  31.                     + "cd.cobdet_mora, \n"
  32.                     + "(cd.cobdet_capiatl+cd.cobdet_interes+cd.cobdet_mora)as Total, \n"
  33.                     + " tiop.descripcion as Tipo, \n"
  34.                     + "forcob.descripcion as Forma, \n"
  35.                     + "co.COB_NROCOMPROBANTE \n"
  36.                     + "from cobro as co \n"
  37.                     + "inner join cobro_detalle as cd ON co.idcobro = cd.idcobro \n"
  38.                     + "inner join cliente as cli ON co.idcliente = cli.idcliente \n"
  39.                     + "inner join persona as per ON cli.idpersona = per.idpersona \n"
  40.                     + "inner join tipo_operacion as tiop ON co.idtipooperacion = tiop.idtipooperacion \n"
  41.                     + "inner join forma_cobro as forcob ON co.idformacobro = forcob.idformacobro \n"
  42.                     + "where  (co.cob_fecha_imp>='" + fechaDesde + "' and co.cob_fecha_imp<='" + fechaHasta + "') \n"
  43.                     + "ORDER BY co.cob_fecha_imp DESC \n \n";
  44.  
  45.             System.out.println(sql);
  46.  
  47.             //ejecuto con mi framework la sentencia SQL
  48.             if (this.con.ejecutar(sql) > 0) {
  49.  
  50.                 // creo mi Resultset
  51.                 ResultSet rs = this.con.rs;
  52.                
  53.                 try {
  54.                     while (rs.next()) {
  55.                         contador++;
  56.                         // obtengo los datos de mi resulset para introducirlos a mi modelo de tabla
  57.                         table.addRow(new Object[]{
  58.                             fechas.format(rs.getDate("cob_fecha_imp")),
  59.                             rs.getInt("cob_nrorecibo"),
  60.                             Numeros.convertir(Numeros.getString(rs.getInt("per_ci"))),
  61.                             rs.getString("Cliente"),
  62.                             rs.getInt("COBDET_NROCUOTA"),
  63.                             Numeros.convertir(Numeros.getString(rs.getInt("cobdet_capiatl"))),
  64.                             Numeros.convertir(Numeros.getString(rs.getInt("cobdet_interes"))),
  65.                             Numeros.convertir(Numeros.getString(rs.getInt("cobdet_mora"))),
  66.                             Numeros.convertir(Numeros.getString(rs.getInt("Total"))),
  67.                             rs.getString("Tipo"),
  68.                             rs.getString("Forma")
  69.                         });
  70.                     }
  71.                 } catch (SQLException e) {
  72.                     System.out.println(e.getMessage());
  73.                 }
  74.             }// fin if ejecutar
  75.  
  76.             if (contador > 0) {
  77.                 // habilito el campo de busqueda
  78.                 this.vista.getTxtbuscarpor().setEnabled(true);
  79.                 this.vista.getTxtbuscarpor().requestFocus();
  80.             } else {
  81.                 limpiarTabla();
  82.                 this.vista.getTxtbuscarpor().setText("");
  83.                 this.vista.getTxtbuscarpor().setEnabled(false);
  84.                 JOptionPane.showMessageDialog(vista, "No existen registros entre las fechas " + fechaDesde + " y " + fechaHasta);
  85.             }
  86.  
  87.             // asigno el modelo a mi jtable
  88.             this.vista.getTbcobros().setModel(table);
  89.  
  90.         } else {
  91.             limpiarConsultaCobros();
  92.             JOptionPane.showMessageDialog(vista,
  93.                     "Debe seleccionar las fechas a filtrar",
  94.                     "Datos requeridos",
  95.                     JOptionPane.WARNING_MESSAGE);
  96.         }
  97.     }

Con el boton de consultar llamo al método

Código Java:
Ver original
  1. @Override
  2.     public void actionPerformed(ActionEvent evt) {
  3.  
  4.         if (evt.getSource() == this.vista.getBtnlimpiar()) {
  5.             this.limpiarConsultaCobros();
  6.         }
  7.  
  8.         if (evt.getSource() == this.vista.getBtnbuscar()) {
  9.             this.obtenerCobros();
  10.         }
  11.     }

Espero puedan darme una manita en esto. Aunque no es algo muy complejo, me tiene un poco perdido. Gracias
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #2 (permalink)  
Antiguo 20/01/2015, 09:50
Avatar de farfamorA  
Fecha de Ingreso: noviembre-2010
Ubicación: Lima
Mensajes: 136
Antigüedad: 13 años, 5 meses
Puntos: 24
Respuesta: Filtrar datos a partir de una consulta a base de datos ya realizada

¿Y cuál es el motivo por el cual no veas como opción volver a consultar en la base de datos?
Añádele unos AND más a tu query SQL.

Etiquetas: filtrar, jtable, netbeans, string, valor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:00.