Cual es la sintaxis correcta del LIKE con MySql y VFP

539 views
Skip to first unread message

Fox Friend

unread,
Feb 15, 2013, 12:56:42 PM2/15/13
to sgbd, zorrosm...@googlegroups.com
Estimados,

No logro que corran las consultas con LIKE cuando llevan parametros de vfp(operador ?) en Mysql.

Estoy usando un servidor local y odbc.

Si hago esto sale bien:

Tecleando directamente el valor '6%'. El campo costo es float con 2 decimales.

cmd = SQLEXEC(lnHandle,"SELECT * FROM  insumos WHERE  costo LIKE '6%' ","cur_roomtype")

o usando un parametro con ?. El campo clave es smallint (entero pequeño).

nValor=1
cmd = SQLEXEC(lnHandle,"SELECT * FROM  insumos WHERE  clave = ?nValor","cur_roomtype")

Pero con el LIKE y al usar el ? no corre..

He probado varias posibilidades entre ellas:

IF lnHandle > 0
nValor=6
*cmd = SQLEXEC(lnHandle,"SELECT * FROM  insumos WHERE  costo LIKE ?nValor+"%" ","cur_roomtype")

o

cmd = SQLEXEC(lnHandle,"SELECT * FROM  insumos WHERE  costo LIKE ?nValor%","cur_roomtype")
IF cmd > 0
 BROWSE

Por otro lado, desde VFP nativo uso esto y corre bien:

SELECT * FROM mitabla WHERE nombre LIKE  ?lcnom+"%" INTO CURSOR MiCursor 

Qué estoy haciendo mal?...

Saludos!

Fox Friend

unread,
Feb 15, 2013, 2:46:54 PM2/15/13
to sgbd, zorrosm...@googlegroups.com
Disculpen si me respondo solo después de unas horas de lucha jeje

(Nadie contestó..)

La solución fue esta:

IF lnHandle > 0
nValor='6'+'%' 
cmd = SQLEXEC(lnHandle,"SELECT * FROM  insumos WHERE  costo LIKE ?nValor","cur_roomtype")

Lo que deduzco es que cuando se usa ? no puede usarse nada más, ninguna otra instrucción de VFP ahi entremetida.

Hay que armar la cadena y meterla a una variable. La cadena obviamente debe ser "texto" para que funcione el like aunque este artículo me deja con dudas..



Saludos!


Walter R. Ojeda Valiente

unread,
Feb 15, 2013, 2:58:36 PM2/15/13
to sistemas-gestores...@googlegroups.com
Tienes otra posibilidad, también podrías escribir:

cmd = SQLEXEC(lnHandle, "SELECT * FROM Insumos WHERE Costo LIKE " + "'" + Transform(nValor) + "%'", "MiCursor")

Si vas a parametrizar, siempre a continuación del ? debe haber una variable y solamente una variable, porque el VFP toma todo lo que está a continuación del ? como si fuera el nombre de una variable.

Saludos.

Walter.




2013/2/15 Fox Friend <thenewin...@gmail.com>

--
Has recibido este mensaje porque estás suscrito al grupo "Sistemas Gestores de Bases de Datos" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/sistemas-gestores-de-bases-de-datos?hl=es-419.
 
 



--
Hay 10 clases de personas. Las que conocen aritmética binaria y las que no.

Fox Friend

unread,
Feb 15, 2013, 4:17:47 PM2/15/13
to sistemas-gestores...@googlegroups.com
Gracias Walter,

Como siempre, que bueno saber lo que indicas.

Saludos!

Rafael Morales

unread,
Feb 15, 2013, 7:03:09 PM2/15/13
to sistemas-gestores...@googlegroups.com
Excelente!!!
 



--
Rafael Morales
Reply all
Reply to author
Forward
0 new messages