Clipper/FiveWin - funcion buscar

 
Vista:

funcion buscar

Publicado por somier (3 intervenciones) el 16/04/2012 18:40:08
Buenas a todos,necesito una funcion en clipper 5.2 que realice una busqueda en un campo de una base de datos ,por ejemplo el nombre de un cliente,pero la funcion debe encontrar trozos del nombre
por ejemplo "jorge martin" si introduzco "mart" que me encuentre "jorge martin".Saludos a la comunidad.
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: 6
Ha mantenido su posición en Clipper/FiveWin (en relación al último mes)
Gráfica de Clipper/FiveWin

funcion buscar

Publicado por Javier (46 intervenciones) el 18/04/2012 17:01:46
Hola: Consulta la ayuda del operador $ que se utiliza para buscar una subcadena dentro de una cadena, es decir como vos nesitas: una parte. Por otro lado, al ingresar parte de un nombre es casi seguro que vas a tener más de una coincidencia por lo que al ingresar esa subcadena, deberías de ver la forma que te muestre esas concidencias para elegir la persona necesaria.

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

funcion buscar

Publicado por somier (3 intervenciones) el 19/04/2012 14:48:50
Yo ,de clipper ando totalmente pez,pero tengo un programilla y alguna cosa ya le he hecho.Tengo esta funcion de busqueda pero como dije en el primer comentario,esta solo busca por el inicio de la cadena,si alguno que sea piadoso quiere echarme una mano y modificar la funcion se lo agradeceria,lo mio es puro hobby,y estoy con otros temas de programacion,tengo un hijo que es un trasto ,no tengo tiempoooooooooo de ponerme a estudiar clipper a fondo,algunas cosillas o generalidades voy aprendiendo pero me parece tarea ingente ponerme con otro lenguaje de programacion nuevo,ya tengo bastante con lo mio.Por favor una ayudita.......A parte de que no hay demasiada informacion o comunidad de clipper,es dificil sacar ejemplos concretos...Un saludo





STATIC FUNCTION buscar
LOCAL buscon,panta,color,cursor,val_ret,orden:=INDEXORD(),por_codi
panta=SAVESCREEN(8,10,16,79)
color=SETCOLOR()
cursor=SETCURSOR()
SETCOLOR("W+/B,W+/*R,,,N/W*")
@ 10,29 CLEAR TO 14,52
@ 10,29 TO 14,52
@ 10,33 SAY " Busqueda "
@ 12,30 PROMPT " Buscar por Numero "
@ 13,30 PROMPT " Buscar por Apellido "
MENU TO por_codi
IF por_codi = 0
val_ret := .F.
ENDIF
RESTSCREEN(8,10,16,79,panta)
SET CONFIRM ON

IF por_codi = 1
SET ORDER TO 1
buscon := 0000
@ 9,20 CLEAR TO 12,55
@ 9,20 TO 12,55
RELIEVE(9,20,12,55,7)
@ 9,22 SAY " Buscar por Numero "
@ 11,22 SAY " Entrar Numero.....:" GET buscon
SET CURSOR ON
READ
SET CURSOR OFF
ELSEIF por_codi = 2
buscon := SPACE(25)
SET ORDER TO 2
@ 9,15 CLEAR TO 12,70
@ 9,15 TO 12,70
RELIEVE(9,20,12,70,7)
@ 9,22 SAY " Buscar por Apellidos "
@ 11,22 SAY " Entrar Apellidos...:" GET buscon
SET CURSOR ON
READ
SET CURSOR OFF
buscon := RTRIM(buscon)
ENDIF
IF LASTKEY() = 27
val_ret = .F.
ELSE
cliente:gotop()
SEEK buscon
IF FOUND()
cliente:refreshall()
val_ret = .T.
ELSE
mensa_23(IIF(por_codi = 1," No Existe Cliente ", ;
" No Existe Cliente "), ,1)
val_ret = .F.
ENDIF
ENDIF
SETCOLOR(color)
SETCURSOR(cursor)
RESTSCREEN(8,10,16,79,panta)
IF !val_ret
SET ORDER TO orden
ENDIF
RETURN val_ret
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

funcion buscar

Publicado por somier (3 intervenciones) el 19/04/2012 15:36:54
Evidentemente el codigo no es mio,es de Suso,un programador de huesca que despues de comprarle el programa en el 96 muy amablemete nos cedio las fuentes y ahora lo estoy intentando readaptar un poquillo .
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

funcion buscar

Publicado por Fernando (6 intervenciones) el 12/05/2012 15:52:06
Static Function Buscar()

local cTexto := "mart"

(fClientes)->(dbClearFilter())

(fClientes)->(dbSetFilter({|| at(rtrim(cTexto), (fClientes)->NOMBRE) > 0}, "at(rtrim(cTexto), (fClientes)->NOMBRE) > 0"))

oBrw:Refresh()
oBrw:goTop()

return NIL

Un saludo,
Fernando
Las Palmas de Gran Canaria
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