Búsqueda vfp mysql

Que tal Experto, tengo una duda al buscar un cliente lo hago de la siguiente manera:
lcnombre = thisform.text1.value  &pongo el criterio de la busqueda en una variable
SQLEXEC(conexion,'select * from cliente WHERE clie_nombre = ?lcnombre ','buscar')&busco un registro
select buscar  &hago esto para mostrar los registros encontrados
save scree to panta
on key label enter deactivate window ventana
on key label esc   deactivate window ventana
activate window ventana
brow field buscar.id_cliente,buscar.clie_nombre,buscar.clie_apellido,buscar.clie_ruc in window ventana nomodify noappend nodelete
scatter memvar
on key label enter
on key label esc
RESTORE SCREEN FROM panta
------
La pregunta es como hago mostrar todos los registros con el nombre de un cliente usando el comando like, por ejemplo:
Que visualice todos los nombres que empiecen con 'jo' por decir.
Desde ya muchas gracias.

1 respuesta

Respuesta
1
Perdón por la demora.
Prueba este comando:
SQLEXEC(conexion,'select * from cliente WHERE like("*CARLOS*", cliente.nombre)=.T. ','buscar')
Suerte y me avisas si tienes dudas
Perfecto salio la consulta, ¿una pregunta como harías una búsqueda incremental utilizando fox con mysql? Si tienes un ejemplo de como es me gustaría poder ver el código para asimilar.
Dame mayor precisión de lo que quieres hacer, ¿a qué te refieres con una búsqueda inclemental?
Disculpe, la búsqueda incremental cuando se busca por letra o por palabra interactúa directamente el código seria algo así en fox:
*--- InteractiveChange ---
LOCAL lc, lnRecno
SELECT clientes
SET ORDER TO cl_nom
lc = ALLT(THIS.VALUE)
lnRecno = RECNO()
IF cl_nom >= lc
  IF NOT BOF()
    SKIP -1
  ENDIF
  IF cl_nom < lc   && debe quedar donde estaba
    IF lnRecno <= RECC()
      GO RECNO()
    ELSE
      GO BOTT
    ENDIF
    RETURN
  ENDIF
  IF NOT EMPTY(ORDER()) && busqueda con indice
    SEEK lc
    THISFORM.txtCl_nom.Value=cl_nom
    thisform.txtCl_ape.Value=cl_ape
  ELSE
    GO TOP
    LOCATE REST FOR cl_nom=lc WHILE cl_nom<= lc NOOPTIMIZE
    THISFORM.txtCl_nom.Value=cl_nom
    thisform.txtCl_ape.Value=cl_ape
  ENDIF
ELSE
    LOCATE REST FOR cl_nom =lc WHILE cl_nom <= lc NOOPTIMIZE
    THISFORM.txtCl_nom.Value=cl_nom
    thisform.txtCl_ape.Value=cl_ape
ENDIF
IF lnRecno # RECNO()
  THISFORM.grid1.SETFOCUS    && el nombre del TextBox
  THISFORM.txtbusqueda.SetFocus   && el nombre del Grid
ENDIF
RETURN
Funciona perfecto en Fox, Pero interactuando con mysql no se como hacerlo.
Gracias
Lo que yo haría en tu lugar es lo siguiente:
1)No trabajaría sobre la tabla SQL.
2) Generar un cursor utilizando la clausula select SQL para recuperar los datos en los que deseo efectuar la búsqueda.
3) Crear un índice estructural para el cursor.
4) Mostrar los datos del cursor en un grid
5) Definir un control TXTBOX para introducir el valor a buscar
6) En el evento interactivechange del formulario escribir el siguiente código: SEEK ALLTRIM (THIS. VALUE)
De esta forma verás cómo puntero del grid se va desplazando a medida que introduces el valor de búsqueda.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas