FoxPro/Visual FoxPro - Acerca de Seek

   
Vista:

Acerca de Seek

Publicado por neo (1601 intervenciones) el 09/04/2008 04:01:56
Tengo una rutina para realizar una consulta por medio de un cuadro de texto, el problema esta en que no encuentra el dato.

La busqueda lo realiza con Seek y utilizo un indice compuesto. ejemplo:
**indice en la tabla comp1: nombre+apaterno+amaterno

SET EXACT ON
SELECT padron
SET ORDER TO comp1
GO top
PUBLIC f3

f3=Thisform.texto2.Value+Thisform.texto3.Value+Thisform.texto4.Value

SEEK Thisform.texto2.Value+Thisform.texto3.Value+Thisform.texto4.Value
? f3
*STORE f3 TO busca3
*SEEK busca3
IF FOUND()
Thisform.grid1.Refresh
WAIT WINDOW "Datos encontrados" TIMEOUT .4
ELSE
MESSAGEBOX("Folio no encontrado, verifique de nuevo",4+16,"Atención")
RETURN .f.

ENDIF

Nota:
Agregé un ? f3 para ver el resultado de la variable f3 y aparecen el nombre, apaterno y amaterno sin espacios (JOSELOPEZREYES) y el Seek busca con espacios. Como puedo solucionarlo

Gracias

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

RE:Acerca de Seek

Publicado por Ernesto Hernandez (4632 intervenciones) el 09/04/2008 06:08:35
SEEK Thisform.texto2.Value+" " +Thisform.texto3.Value+" "+Thisform.texto4.Value

pruebalo asi
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

RE:Acerca de Seek

Publicado por brigi (172 intervenciones) el 09/04/2008 12:31:03
Utiliza las funcion LTRIM para quitar espacios y haz tanto el índice como la busqueda sin espacios.

Un Saludo
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

RE:Como agrego el Alltrim en la tabla

Publicado por neo (1601 intervenciones) el 09/04/2008 17:47:45
Como hago para que en el indice compuesto no haya espacios, es decir, en donde debo escribir el Alltrim de la tabla.

Saludos
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

RE:Acerca de Seek

Publicado por enrique (1041 intervenciones) el 09/04/2008 20:28:36
reemplaza tu seek por este

SEEK padr(Thisform.texto2.Value,tamaño_campo," ") + ;
padr(Thisform.texto3.Value,tamaño_campo," ")+ ;
padr(Thisform.texto4.Value ,tamaño_campo," ")

donde tamaño_campo es el de los campos tu tabla.
Pruebalo.
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

RE:Acerca de Seek...Solucionado

Publicado por neo (1601 intervenciones) el 09/04/2008 21:42:13
Gracias Amigos....

Un Saludo
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
Imágen de perfil de Mauricio Gonzalez

Acerca de Seek

Publicado por Mauricio Gonzalez (1368 intervenciones) el 11/04/2008 23:04:55
Neo, puedes hacer esto:
abres la tabla comp1
luego le das modificar, aca te aparecen todos los campos de comp1
arriba dice indice, le das clic
luego le pones un nombre al indice por ejemplo COMP1, luego en el tercer campo
pones esta expresion: ALLT(nombre) + ALLT(apaterno) + ALLT(amaterno)
y listo ya creaste el indice sin espacios, ahora vamos al SEEK:

SET EXACT ON
SELECT padron
SET ORDER TO comp1
GO top
PUBLIC f3

f3=ALLT(Thisform.texto2.Value) + ALLT(Thisform.texto3.Value) + ALLT(Thisform.texto4.Value)

SEEK f3
IF FOUND()
Thisform.grid1.Refresh
WAIT WINDOW "Datos encontrados" TIMEOUT .4
ELSE
MESSAGEBOX("Folio no encontrado, verifique de nuevo",4+16,"Atención")
RETURN .f.
ENDIF

Suerte, espero que te ayude....... saludos....
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