Existen varios tipos de búsquedas, cada una con sus propias ventajas y desventajas, a continuación te voy a explicar brevemente 2 métodos muy usados en VFP:
1. Método de búsqueda binaria.
La búsqueda binaria consiste en ir dividiendo la lista ordenada de mitad en mitad, hasta llegar al valor que se busca.
En este método se usa la instrucción SEEK, previamente debiste activar un índice.
(Un índice es como un "ordenamiento virtual" que se realiza sobre un solo campo en especifico, para que se pueda activar un ínidice es necesario haberlo creado previamente con la instrucción INDEX ON.
Éste tipo de búsqueda más rápida que cualquier otro, la única desventaja es que te "encierras en un solo campo", generalmente la llave primaria, es decir, que si necesitas buscar algo a partir de otro campo, no te funcionará.
Ejemplo:
* para abrir con unindice previamente hechio
USE <tabla>
INDEX ON <CAmpo> To <Archivo>
SET INDEX TO <Archivo>
.
.
.
.
.
*para buscar
SELECT <Tabla>
SEEK <valor>
if Found()
? "Valro encontrado"
Else
? "Valor no encontrado"
Endif
.
.
.
.
.
2. Búsqueda secuencial:
En este método, más eficiente, pero un poco más lento, sobre todo en tablas con miles de registros, éste método consiste en ir comparando a partir del campo especifico, registro por registro hasta llegar al buscado, y en caso de llegar al final de la tabla sin encontrar ninguno, FOUND() devolverá Falso.
Para éste método no es necesario un índice
Ejemplo:
*Abrimos la tabla
USE <Tabla>
.
.
.
.
* Para buscar
SELECT <tabla>
LOCATE FOR <campo> = <valor>
if Found()
? "Valro encontrado"
Else
? "Valor no encontrado"
Endif
.
.
.
.
Como podrás darte cuenta, en este método puedes usar cualquier campo para buscar...
Para buscar con 2 campos, que ese es tu problema, puedes usar la forma como te había dicho:
Por ejemplo si tienes 2 campos ap_mat y ap_pat (en donde guardas los apellidos de algún nombre) y quieres ubicar el apellido "PEREZ", la instrucción de búsqueda lo pondrías de la siguiente forma:
LOCATE FOR LIKE("PEREZ",Ap_Pat+Ap_mat)
* LIKE es una funcion que te ubica una subcadena dentro de otra cadena, y devuelve Verdadero si la ubica en alguna parte de la misma.
En este caso, al concatenar los dos apellidos, formarás una cadenota en donde podrás buscar sin ningún problema.
Saludos desde Merida, Yuc. Mex.
[email protected]