Rutina de búsqueda

Tengo un formulario y necesito una rutina para localizar datos en una tabla y que la información que arroje pueda ser visualizada en la caja de texto correspondiente en el formulario

3 Respuestas

Respuesta
1
Lo que tu quieres es buscar por ejemplo un nombre y luego desplegar los resultados... se me ocurre esto:
Set Safety Off
Set Deleted On
a=0
thisform.Resultado.clear
LOCAL Guardar,Valor,Result
DIMENSION Guardar[1]
DIMENSION Result[1,2]
Ncarac = Len(Thisform.Busqueda.Value)
B= AllTrim(Upper(Thisform.Busqueda.Value))
If Empty(Thisform.Busqueda.Value)
Select B_Apellidos
Delete All
Pack
&&Zap In c:\B_Apellidos
Else
SELECT cod,Ape FROM _Ruta\Scalumno INTO Table c:\B_Apellidos;
where substr(Upper(ape),1,NCarac)= b Order By Ape
Endif
Thisform.Resultado.Rowsource =;
"B_Apellidos.ape,cod"
Set Safety On
Puedes mejorarlo utilizando cursores... para que sea mucho más rapido...
Lo hice así por darte un ejemplo rapido...
Si te das cuenta este es un ejemplo de búsqueda incremental...
Va buscando letra por letra...
Hasta la próxima
Respuesta
1
¿La tabla está ordenada?, en caso de ser así, puedes utilizar la función SEEK, de otra forma puedes utilizar la función LOCATE (no recomiendo esto último, es mejor el indexado).
Para mostrar la información, utiliza el evento REFRESH del formulario.
Espero que con esto puedas solucionar el problema, en caso de no ser así, con gusto te puedo dar otras opciones.
Bueno, eso digo yo...
Por favor enviame un ejemplo detallado
¿A qué dirección?
El archivo con el ejemplo ya lo envíe, favor de avisar si hay algún problema.
Respuesta
1
Primero tu tabla debe tener un indice para el campo de búsqueda.
En el valid del campo de búsqueda agregas lo siguiente:
select mi_tabla
seek dato_capturado
if eof()
poner aviso de no encontrado
else
Refresh de tu formulario
Endif
El refresh puede o no funcionar depende de como estén tus demás campos, si esto están como variables de memoria "m.valor" entonces deberás hacer un scatter memvar y refresh, de lo contrario con el refresh es suficiente.
Suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas