FoxPro/Visual FoxPro - Acelerar las busquedas

 
Vista:
sin imagen de perfil

Acelerar las busquedas

Publicado por Juan (71 intervenciones) el 17/06/2014 15:36:49
Buenas tardes, estoy haciendo una busqueda de una palabra que esté contenida en el nombre de algún cliente, pero como ya tengo muchos clientes me tarda mucho en hacer eso. Hay alguna manera de hacer lo mismo acelerando el proceso?.

Yo hago lo siguiente:

1
2
3
use mitabla order nombre
set filter to 'GUTIE'$nombre
go top

A ver si me pueden echar una mano y acelerar este tipo de busquedas.

Un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 1.011
Oro
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Acelerar las busquedas

Publicado por Fidel José (558 intervenciones) el 17/06/2014 16:19:01
lcBusca="GUTIE"
LcLike=[%]+lcBusca+[%] && con los dos [%], "GUTIE" puede estar en cualquier posición.
&& si necesito que esté a la izquierda: LcLIke=lcBusca+[%]

SELECT nombre,cuit,recno() as Registro FROM mitabla WHERE nombre LIKE lcLike INTO CURSOR curREsult readwrite
SELECT curResult
BROWSE

* Acá puedo seleccionar (generalmente con un control GRid) uno de los registros detectados y:
lnRegistro=REgistro
USE && cierro el cursor de búsqueda (curResult)

SELECT miTabla
GO lnRegistro && pongo el puntero sobre el registro encontrado.


&& Con el ejemplo, traerá, por ejemplo todos los Gutierrez que encuentre.
Si lcBusca="GUT", traerá a los Gutierrez y a los Gutemberg.
Si lcBusca="GU", traerá los Gutierrez, los Gutemberg, los Guatemala y los Gustavo (y otros como los Guisani, Gualberto, Maiztegui, Miguel, etc).
Si quieres que traiga solamente los que empiezan con "GU"; LcLike=[%]+" "+lcBusca+[%], aunque en este caso no te traerá la palabra más a la izquierda.
Para que te traiga todos los registros que tengan alguna palabra que comienze con "GU":
lcBusca="GU"
lcLike=LcBusca+[%]

SELECT nombre,cuit,RECNO() as registro FROM mitabla WHERE nombre like lcLike OR LEFT(nombre,LEN(lcBusca))==lcbusca INTO CURSOR curREsult readwrite
SELECT curResult
browse

Nota: Con select Sql, conviene tener índices por los campos en los que se busca habitualmente, pero no es necesario utilizar SET ORDER TO TalEtiqueta. SELECT-SQL considerará las etiquetas que necesite.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar