Creacion de Busqueda

Hola a todos, bueno mi pregunta es como puedo crear una búsqueda carácter por carácter en text en foxpro, es decir que en tiempo de ejecución cada vez que introduzca una letra o numero el grid comience a quedarse con lo que estén cumpliendo con la condiciones haste que se cumpla el ultimo carácter
Respuesta
1
Dame tu correo y te mando un ejemplo, porque en puro texto no creo que me entiendas muy bien
Gracias... mi email es [email protected]
* Para hacer una BUSQUEDA INCREMENTAL en un Formulario, debemos poner un
* TextBox (Text1) y una Grilla (Grid1).
* En el Entorno de datos insertaremos la tabla (MiTabla)
* En el método InteractiveChange del TexBox
* escribir el siguiente código:
*----------------------------------------------------------------------
*--- InteractiveChange ---
local lc, lnRecno
Select MiTabla
lc = allt(This.Value)
lnRecno = recno()
if MiTabla.Nombre >= lc
if not bof()
skip -1
endif
if MiTabla.Nombre < lc && debe quedar donde estaba
if lnRecno <= recc()
go recno()
else
go bott
endif
return
endif
if not empty(order()) && busqueda con indice
seek lc
else
go top
locate rest for MiTabla.Nombre=lc while MiTabla.Nombre <= lc nooptimize
endif
else
locate rest for MiTabla.Nombre=lc while MiTabla.Nombre <= lc nooptimize
endif
if lnRecno # recno()
ThisForm.Grid1.SetFocus && el nombre del TextBox
ThisForm.Text1.SetFocus && el nombre del Grid
endif
return
*--- END InteractiveChange ---
*----------------------------------------------------------------------
* NOTA: SE DEBE TENER LAS SIGUIENTES CONSIDERACIONES:
* -La tabla debe estar ordenada ASCENDENTEMENTE o existir un indice
* por Nombre y estar seleccionado (el método busca si hay un
* SET ORDER establecido)
* -Fijarte bien el nombre del TexBox y del Grid para invocar el
* método SetFocus (en el ejemplo Grid1 y Text1)
* -Fijarte el alias de la tabla del grid (en el ejemplo MiTabla)
* -Conviene que los nombres estén en mayúsculas y añadir en la
* propiedad Format del TextBox = ! para que sean ingresados en mayúsculas
Funciona, pero no es como lo quiero, te voy a explicar mejor, yo tengo un código de barra, ejemplo 010102-E1SME-1-2, y hay varios código que que son semejante con diferencia de POR carácter, yo quiero que cada vez que introduzca uno los que no cumple desaparezcan, yo lo hice de este modo
-----KeyPess---
LPARAMETERS nKeyCode, nShiftAltCtrl
SELECT codgeneral
letra = INKEY(nKeyCode)
busca = ALLTRIM(busca)+ALLTRIM(letra)
SET ORDER TO codigogene
SET FILTER TO codigogene = ALLTRIM(busca)
thisform.grid1.Refresh
Este procedimiento funciona hasta un punto, cuando presiono la tecla Delete o de retroceso o cualquier otra tecla que no sea la alfanumérica en el Textbox me presenta un carácter no reconocido y en el Grid los campo que cumple desaparecen no se como controlar ese problema
-----KeyPess---
LPARAMETERS nKeyCode, nShiftAltCtrl
SELECT codgeneral
SET FILTER TO
letra = INKEY(nKeyCode)
busca = ALLTRIM(busca)+ALLTRIM(letra)
SET ORDER TO codigogene
SET FILTER TO codigogene = ALLTRIM(busca)
Thisform. Grid1. Refresh
Prueba con esto...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas