Busqueda
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
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
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
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
- 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
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
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
