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

Como puedo hacer esto

Estas en el tema de Como puedo hacer esto en el foro de Java en Foros del Web. Estoy realizando un un sistema para droguería, el usuario me pidió que añadiera la opción de buscar un producto, hasta hay todo va bien, lo ...
  #1 (permalink)  
Antiguo 21/06/2010, 11:20
 
Fecha de Ingreso: abril-2010
Ubicación: Manizales
Mensajes: 91
Antigüedad: 14 años
Puntos: 2
Como puedo hacer esto

Estoy realizando un un sistema para droguería, el usuario me pidió que añadiera la opción de buscar un producto, hasta hay todo va bien, lo que sucede es que cada producto de la droguería tiene distintos campos, nombre, código de barras, fecha de vencimiento, etc.....

Lo que tenia pensado es que hacer un conjunto de radio button, para que el usuario seleccionara por cual de los campos quería buscar, luego si seleccionó buscar por el nombre, el sistema saque una lista desplegable asi como google, y en el momento que desee buscar saque los resultados un en JTable. Me explico;

Si voy a buscar "Dolex", selecciono "nombre" en el grupo de radio button, y luego tecleo "Dolex", en el JTable me deben aparecer todos los tipos de Dolex asi: Dolex niños, Dolex gripa, Dolex en capsulas........

Hasta hay no tengo problema, el problema es que al yo hablar con el usuario, no el gusto la idea de los radio button, el lo quiere asi como google, que si comienza a introducir numeros, aparezca por códigos de barras, si introduce nombres pues por nombres, y así......

Alguien me podría ayudar con eso es que no tengo idea, y me parece muy ineficiente que cada cosa que el usuario introduzca haya que buscarla en todos los campos de todos los productos......

Gracias de antemano
  #2 (permalink)  
Antiguo 21/06/2010, 12:43
 
Fecha de Ingreso: enero-2005
Mensajes: 15
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Como puedo hacer esto

Que tal, lo unico que se me ocurre es que leas el texto que te escribe por ejemplo luego que escribio un par de caracteres, 3 por ejemplo . Luego vas filtrando, segun el formato introducido.
Si te puso 21/06 ya sabes que es fecha, si puso 231 sabes es codigo. Desde cuantos caracteres tenes que empezar a buscar depende de como esta codificado en la base de datos por un lado. Tambien tenes que tener en cuenta para comenzar a buscar del tiempo entre caracter. Por ejemplo: le das un pequeño tiempo ente caracter y caracter y un tiempo mayor para considerarlo como que dejo de escribir. A partir de ese momento no le dejas escribir mas y filtras trayendo de donde sea segun lo que introdujo.

Por ejemplo: escribe 123 deja de escribir 2 seg. (consideras que no va a escribir mas)
no le dejas cargar mas... filtras.. es numero -> es codigo-->traeme todos los que comienzen con 123
  #3 (permalink)  
Antiguo 21/06/2010, 14:14
 
Fecha de Ingreso: abril-2010
Ubicación: Manizales
Mensajes: 91
Antigüedad: 14 años
Puntos: 2
Respuesta: Como puedo hacer esto

mmm buena idea paquil, pero lo de los segundos no me convence, pues cuando el usuario decida dejar asi, por ejemplo cuando el decida que quiere una lista con 123, simplemente pulsa enter
  #4 (permalink)  
Antiguo 21/06/2010, 16:01
 
Fecha de Ingreso: enero-2005
Mensajes: 15
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Como puedo hacer esto

Cita:
Iniciado por afruizc Ver Mensaje
mmm buena idea paquil, pero lo de los segundos no me convence, pues cuando el usuario decida dejar asi, por ejemplo cuando el decida que quiere una lista con 123, simplemente pulsa enter
Bueno al presionar enter consideralo como si pasaron un par de segundos tambien.
O sea el filtro se activa tanto si transcurrieron un par de segundos sin actividad o si presionaron enter
  #5 (permalink)  
Antiguo 22/06/2010, 07:11
 
Fecha de Ingreso: marzo-2009
Ubicación: Santa Marta
Mensajes: 73
Antigüedad: 15 años, 1 mes
Puntos: 2
Respuesta: Como puedo hacer esto

Hola como vas. pues se me ocurre a medida que vayas escribiendo en el textbox con el evento keypressed vayas consultando la bd de tal manera que haces un select y en el where haces un like de los campos que quieres que sean filtrados

select * from medicina where nombre like '%"+variable+"%' or fecha like '"+variable+"' ... y asi sucesivamente los valores que quieras filtrar.

asi cuando el usuario escriba dolex te va a devolver los valores que arroje la consulta... obviamente debes controlar los formatos en la consulta no no en las variables

espero te sirva
  #6 (permalink)  
Antiguo 22/06/2010, 09:15
 
Fecha de Ingreso: abril-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Como puedo hacer esto

Como te han dicho, introduce en la setencia SQL de la consulta un LIKE y le pasas un String que has creado en la ventana principal...
  #7 (permalink)  
Antiguo 22/06/2010, 10:22
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.511
Antigüedad: 15 años, 8 meses
Puntos: 188
Respuesta: Como puedo hacer esto

La otra opción sería utilizar alguna librería de AJAX, de tipo scriptaculous por ejemplo, y generar un autocompletar. Si las diferencias están tan marcadas recupera los valores de diferentes campos de tu BD: nombre, codigo, etc. y a medida que vaya escribiendo le vayan apareciendo desplegadas con algún div superpuesto las distintas posibilidades de elección.
  #8 (permalink)  
Antiguo 22/06/2010, 16:28
 
Fecha de Ingreso: febrero-2010
Mensajes: 35
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Como puedo hacer esto

Cita:
Iniciado por decoArguello Ver Mensaje
Hola como vas. pues se me ocurre a medida que vayas escribiendo en el textbox con el evento keypressed vayas consultando la bd de tal manera que haces un select y en el where haces un like de los campos que quieres que sean filtrados

select * from medicina where nombre like '%"+variable+"%' or fecha like '"+variable+"' ... y asi sucesivamente los valores que quieras filtrar.

asi cuando el usuario escriba dolex te va a devolver los valores que arroje la consulta... obviamente debes controlar los formatos en la consulta no no en las variables

espero te sirva
esta creo que es la respuesta mas razonable, ahora para el filtrado de las letras sino quieres poner un tiempo de espera por que no usas el evento CaretListener , este evento se dispara cuando la longitud de caracteres dentro del componente ha cambiado, la vdd es muy util, he insisto, la idea mas logica es realizar toda la logica de los datos desde el select de la base de datos con like.
  #9 (permalink)  
Antiguo 22/06/2010, 20:49
 
Fecha de Ingreso: abril-2010
Ubicación: Manizales
Mensajes: 91
Antigüedad: 14 años
Puntos: 2
Respuesta: Como puedo hacer esto

Pero, que es mejor, hacer la consulta directamente desde la base de datos, o cargar todos los datos de la base de datos cuando cargue el programa, en un ArrayList o cualquier otra estructura de datos, y buscar dentro de esa estructura de datos, creo que esta segunda es más eficiente y es con la que pienso trabajar

Gracias de nuevo

Etiquetas: Ninguno
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 10:32.