Búsqueda Dinámica

Tengo una tabla llamada Productos (codprod, desprod, etc.). Como hago para crear un grid que contenga por lo menos la descripción del producto y mientras voy escribiendo en un textbox, en el grid me vaya apareciendo el producto que busco, luego de haberlo encontrado seleccionarlo para que me aparezca en un form llamado FrmProductos

1 Respuesta

Respuesta
2
Usuario jdramos! La solución es fácil. Debes crear el grid y basarlo en la tabla. Así mismo, un TIMER para el intervalo de tiempo. Luego, en el InteractiveChange del text ubicar un filtro de búsqueda para un campo especifico. Así, al teclear en el text, te aparecerán en el grid interactivamente (búsqueda incremental) los resultados que coincidan con el valor mismo del text.
Va así: Imagina que tienes la tabla "Tabla1" con los campos "codigo", "descripcion".
1. Crea un control time (Timer1) en tu form con: Interval= 500, Enabled = .F.
2. Creas un grid cuya propiedad Recordsource sea "tabla1".
3. Creas un text (TEXT1) y en InteractiveChange estableces el filtro de búsqueda, en dependencia si keres buscar coincidencias de código o de descripción:
THISFORM.Timer1.Enabled = .T.
THISFORM. Timer1. Reset
THISFORM. Refresh
SET FILTER TO ALLTRIM(THISFORM.Text1,Value) $ STR(tabla1.codigo)   &&Mostrar resultados por codigo&&
THISFORM. REFRESH
Nota. Si las coincidencias las quieres por descripción, unicamente cambia en la linea del filtro así:
SET FILTER TO UPPER(ALLTRIM(THISFORM.Text1.Value) $ UPPER(tabla1.descripcion)   &&Mostrar resultados por descripcion&&
THISFORM. Refresh
4. En el control Timer1, en la propiedad TIMER pone esto:
THISFORM. Text1. InteractiveChange
THISFORM. Refresh
Y listo! Solo debes decidir como quieres hacer la búsqueda en tu grid.. si es por código (usa el filtro de código) o por descripción (usas el segundo que te mostré). También puedes crear un Combobox a través del cual, puedas elegir como quieres buscar las coincidencias en tu grid... puesto que imagino que no siempre querrás buscar por código... y no siempre querrás por descripción. Avisame que opinas y te ayudo! Es fácil!
Esta es mi humilde opinión! Si quieres, puedes facilitarme una cuenta de correo y te envío un ejemplo muy sencillo pero bien claro que tengo para que comprendas mejor! Lo "desarmas" y fíjate como se hace... en la practica! Es muy útil! Te lo aseguro!
A tus ordenes!
Respecto a la ultima parte... "luego de haberlo encontrado seleccionarlo para que me aparezca en un form llamado FrmProductos" creo que va así.
Imagino que tu form "Padre, o principal..."  es FRMproductos. Entonces, lo que debes hacer para poder buscar el registro coincidente, seleccionarlo y mostrarlo en FrmProductos es crear un form (hijo) que puedas llamar desde FrmProductos. Así, al abrir el form de búsqueda, realizas la búsqueda, encuentras lo que buscas, seleccionas en el grid el registro y cierras el form (hijo). Al volver a tu form Frmproductos (padre), el registro que seleccionastes se mostrara! Esto debido a que, al seleccionar en el grid del form de búsqueda, el puntero se desplaza al registro que seleccionas en la tabla. Recordá que un grid es "como una extensión o ventana" de la tabla. Así seleccionas un registro, el puntero se ubica en tal, y en el form frmprod. Te lo mostrara! Así de fácil! :D :D :D
Funciona de Maravilla, pero tampoco es malo que me envíes el ejemplo al corre: [email protected], Muchas Gracias, espera una nueva pregunta de mi parte.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas