Busqueda

ana
12 de Septiembre del 2003
Necesito buscar un registro en donde se cumplan 2 condiciones. Yo solo utilizo SEEK para buscar en un solo campo. Pero, por ejemplo quiero buscar un registro en donde mi campo a=20 y b=lima

CESAR NU?Z
12 de Septiembre del 2003
Si quieres que aparezcan solamente los registros que cumplen con la condicion usa la siguiente:

SET FILTER TO a=20 .and. b="lima"

o, si no quieres mostrarlo solo encontrarlo.

Debes crear un indice de la primer condicion:

Por ejemplo
seek 20 &&El indice es por el campo a
do while a==20

if b="lima"
exit &&se sale del ciclo porque ya lo encontraste
endif
skip
enddo

&&Espero que te sea de ayuda

Samuel
12 de Septiembre del 2003
Crea un indice normal en el cual concatenas los campos a y b.
- Luego en tu programacion ordenas con ese indice:
Set order to < nombre indice creado>
- Y luego buscas:
Seek (variable1+variable2)
- Asegurate de que las variables sean del mismo tipo o sino las conviertes.
Ejemplo: Seek (alltrim(str(20))+alltrim('lima'))

- Saludos

Alex
12 de Septiembre del 2003
En mi opinion, la sugerencia de Samuel es ventajosa.
El uso de filtros anula la capacidad Rushmore en la
gran mayoria de los casos, probocando un tiempo de
resultados mas bien pobre.
Sin embargo, si se genera un indice complejo producto de concatenar los campos a y b de diferentes tipos, es allí donde conviene realizar la
conversion de digito a caracter. (o visceversa)
Por tanto, no sería necesario llamar a la funcion str en la busqueda mediante seek.
De realizar una llamada de la funcion seek, con
funciones anidadas, tambien se anula la capacidad rushmore de Visual Foxpro.

Saludos

rene
12 de Septiembre del 2003
hola locos