SELECT, PORQUE NO FUNCIONA CORRECTAMENTE A VECES?

25/06/2006 - 12:33 por Santo76 | Informe spam
tengo estas variables:
cTaula = 'clients'
cCamp = 'NOM'
lBusca = 'alber'
d = 'alber'

I tengo estas 2 consultas identicas, aparantemente.

SELECT * from &cTaula where &cCamp like '%lbusca%' into CURSOR cursql
SELECT * from &cTaula where &cCamp like '%b%' into CURSOR cursql

PORQUE LA 1º SELECT NO FUNICONA I LA SEGUNDA SI?, SOLO CAMBIO LA LONGITUD DE
LA VARIABLE, PERO EL CONTENIDO ES EL MISMO, NO?

ESTA ES MI PREGUNTA, SI ALGUIEN SABE RESPONDER A ESTA INCOGNITA LES ESTARIA
MUY AGRADECIDIO, YA QUE ME TOMO MAS DE UN DIA EN AVERIGUAR POQUE NO
FUNCIONAVA ON LA 1º INSTRUCCION.

Preguntas similare

Leer las respuestas

#1 Alex Feldstein
25/06/2006 - 12:55 | Informe spam
On Sun, 25 Jun 2006 03:33:01 -0700, Santo76
wrote:

tengo estas variables:
cTaula = 'clients'
cCamp = 'NOM'
lBusca = 'alber'
d = 'alber'

I tengo estas 2 consultas identicas, aparantemente.

SELECT * from &cTaula where &cCamp like '%lbusca%' into CURSOR cursql
SELECT * from &cTaula where &cCamp like '%b%' into CURSOR cursql

PORQUE LA 1º SELECT NO FUNICONA I LA SEGUNDA SI?, SOLO CAMBIO LA LONGITUD DE
LA VARIABLE, PERO EL CONTENIDO ES EL MISMO, NO?

ESTA ES MI PREGUNTA, SI ALGUIEN SABE RESPONDER A ESTA INCOGNITA LES ESTARIA
MUY AGRADECIDIO, YA QUE ME TOMO MAS DE UN DIA EN AVERIGUAR POQUE NO
FUNCIONAVA ON LA 1º INSTRUCCION.




En la segunda estás usando b como variable cuando la que defines es:
d = 'alber'

Notas:
No uses mayúsculas en todo tu mensaje que aparece como que estas
gritando y se ve mal.

Es mala idea usar variables deun aletra en VFP, usando letras de A
hasta J mas la M. Estas son palabras reservadas y no deben usarse.

Trata de evitar macros (indirección) en queries ya que lo hacen más
lento y más difícil de mantener.

Si debes usarlas, úsalas asi:
SELECT * FROM (cTaula) ;
WHERE (cCamp) ...

Mira la ayuda también por: SET ANSI



Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP

Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(address munged with ROT-13)

Blog: http://alexfeldstein.blogspot.com
Website: http://www.feldstein.net
Respuesta Responder a este mensaje
#2 Santo76
25/06/2006 - 13:26 | Informe spam
Tienes razon, siento lo de las mayusculas.
Te he echo caso y he cambiado los & por () pero pasa lo siguiente:

no funciona
SELECT * from (cTAula) where (cCamp) like '%rd%' into CURSOR cursql

si funciona
SELECT * from (cTAula) where &cCamp like '%rd%' into CURSOR cursql

O sea que puedo poner la variable de la tabla entre comillas pero no la del
campo

I me queda pendiente una question mas, como puedo passar el valor de una
variable (que era mi idea principal), junto con el LIKE para que me haga la
busquda intermedia, he intentado de poner-lo entre (), enre "", con el &, y
no me lo coge, hay forma de que pueda hacerlo, gracias.

Quiero decir, lo que ahora busca, que es una busqueda intermidia del literal
'rd', lo quisiera cambiar por una variable, ya que no siempre voy a buscar lo
mismo, sino que necesito passar-le el valor de una variable que contenga el
literal a buscar.
Respuesta Responder a este mensaje
#3 Alex Feldstein
25/06/2006 - 23:37 | Informe spam
On Sun, 25 Jun 2006 04:26:01 -0700, Santo76
wrote:

Tienes razon, siento lo de las mayusculas.
Te he echo caso y he cambiado los & por () pero pasa lo siguiente:

no funciona
SELECT * from (cTAula) where (cCamp) like '%rd%' into CURSOR cursql

si funciona
SELECT * from (cTAula) where &cCamp like '%rd%' into CURSOR cursql

O sea que puedo poner la variable de la tabla entre comillas pero no la del
campo

I me queda pendiente una question mas, como puedo passar el valor de una
variable (que era mi idea principal), junto con el LIKE para que me haga la
busquda intermedia, he intentado de poner-lo entre (), enre "", con el &, y
no me lo coge, hay forma de que pueda hacerlo, gracias.

Quiero decir, lo que ahora busca, que es una busqueda intermidia del literal
'rd', lo quisiera cambiar por una variable, ya que no siempre voy a buscar lo
mismo, sino que necesito passar-le el valor de una variable que contenga el
literal a buscar.




Porque la variable rd no esta siendo evaluada como variable en tu
ejemplo.

Usa la recomendación de Esparta en tu otro hilo:
TEXT TO lcSQL NOSHOW TEXTMERGE
SELECT Campo1, Campo2, Campo N
FROM <<lcTabla>>
WHERE <<lcCampo>> LIKE ?lcBusca
ENDTEXT

Nota: No abras mas de un hilo por la misma pregunta. Sólo pregunta una
vez y en el foro indicado, no en varios.



Alex Feldstein
________________________________
Microsoft Visual FoxPro MVP

Please respond in the public groups so that everybody
can benefit from the exchange.
Favor de responder en los foros públicos asi todos se benefician.
(address munged with ROT-13)

Blog: http://alexfeldstein.blogspot.com
Website: http://www.feldstein.net
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida