Condicion demasiada larga en un select (error: Command contains unrecognized phrase/keyword)

1,929 views
Skip to first unread message

José Jiménez Zuryta

unread,
Oct 15, 2010, 5:07:24 PM10/15/10
to Comunidad de Visual Foxpro en Español
Saludos: estoy utilizando una consulta con Select:
select uno, dos, tres from expedientea, parcela, asunto where
&condicion
El problema es que me manda un error:
Command contains unrecognized phrase/keyword
La condición la armo dependiendo de los filtros que seleccione.
Analizando me doy cuenta que la condicion es demasiada larga en
caracteres.
La condicion esta armada de varias condiciones, ejemplo:
condicion="con1"+" and "+"con2"+" and "+con3+" and "+con4
Intenté poner esto con el Text... endText, pero no me resuelve los
valores de mis condiciones, por ejemplo: Si la con1="&materia" + " and
" + "&salon", se queda así con estos mismos cuando utilizo el Text...
endtext.
En este ejemplo, el valor de la:
con1="(BETWEEN(c1.fcomven,xFi,xFf) or c1.fcomven={})"
con2="allt(expediente.mandatario) = xmandatario"
Lo valores de xFi y xFf son parametreos de entrada que el usuario
selecciona (Fecha inicial y Ficha Final) y el valor de xmandatario
también es seleccionado por el usuario (caracter)
Espero sus respuesta y gracias, cualquier duda estos a sus órdenes
(jzu...@hotmail.com)

Ing.Daniel Bojorge

unread,
Oct 15, 2010, 5:18:30 PM10/15/10
to publice...@googlegroups.com
Te recomiendo que hagás la consulta en una cadena y luego la ejecutés, algo así

vlSQL = "Select a,b,c from d where " + condicion + " into cursor curSalida"

y luego la ejecutés así

&vlSQL

y listo

Si la cadena es bien grande, utilizá text...end text para armarla.



Dios L@s Bendiga

Saludos,

Daniel (Con 1 Estrella DCE de Microsoft)
Nicaragua

"Si ustedes permanecen unidos a mí, y si permanecen fieles a mis enseñanzas, pidan lo que quieran y se les dará.
(Juan 15:7 DHH)
Bendito el varón que se fía en el SEÑOR, y cuya confianza es el SEÑOR.
(Jeremías 17:7 RV2000)

Jose Zurita

unread,
Oct 15, 2010, 5:22:14 PM10/15/10
to publice...@googlegroups.com
HE utilizado el TExt... enttext, pero los valores de las condiciones no se resuelven. Alguna otra idea?


From: debs....@gmail.com
Date: Fri, 15 Oct 2010 15:18:30 -0600
Subject: Re: [vfp] Condicion demasiada larga en un select (error: Command contains unrecognized phrase/keyword)
To: publice...@googlegroups.com

Angel Ferreira

unread,
Oct 15, 2010, 5:23:23 PM10/15/10
to publice...@googlegroups.com
Hola Jose,

A mi modo de entender, tienes dos casos por resolver:

1. Instruccion Select muy larga
2. Al Usar Text...EndText para resolver el punto Nro. 1,  necesitas que ciertas variables se evaluen en su contenido.

Para resolver esto realiza lo siguiente:

LOCAL  cSql As STRING

TEXT TO cSql TEXTMERGE
      INSTRUCCION SELECT
ENDTEXT

Ok,  en tu caso,  necesitas que las variables que tienen condiciones se evaluen para poder expresar el contenido de la misma y no el nombre de la variable,  por lo que debes utilizar dichas variables enmarcadas en los siguientes caracteres:  << VARIABLE >>

Ejemplo:

TEXT TO cSql TEXTMERGE

    condicion=<<con1>>+" and "+<<con2>>+" and "+<<con3>>+" and "+<<con4>>

   SELECT * FROM ..... WHERE &condicion

  
ENDTEXT


Espero que te sirva.

Saludos,
AF

Mauricio Molinero,

unread,
Oct 15, 2010, 5:24:55 PM10/15/10
to Comunidad de Visual Foxpro en Español
Jose deberias pasarnos el codigo original en limpio para que te
podamos ayudar..

Como lo describes puede haber un error en cualquier lado.

Saludos!

Mauricio R. Molinero,

extremo

unread,
Oct 15, 2010, 5:25:40 PM10/15/10
to Comunidad de Visual Foxpro en Español
el problema que veo es que el select lo esta truncando

prueba mandandolo tu sql al una variable luego la ejecutas como macro
como en el siguiente ejemplo

mySql = "select campos.... from tabla "
mySql = mySql + " left join .... "
mySql = mySql + " left join .... "
mySql = mySql + " left join .... "
mySql = mySql + " left join .... "
mySql = mySql + " left join .... "
mySql = mySql + " left join .... "
mySql = mySql + " where " + mis condiciones
&mySql

Yo he hecho consultas de este tipo muy grandes..... ojo... si es muy
extensa la consulta envio la consulta a un campo memo y desde el campo
memo la ejecuto con

execscript(tabla.campomemo)

Espero te sirva

Bendiciones

Jose Zurita

unread,
Oct 15, 2010, 5:38:10 PM10/15/10
to publice...@googlegroups.com
Este fue la solución, lo que me enviaste me sirvió de mucho y te lo agradezco: puedes pasarme tu correo MSN para estar en contacro contigo?

TEXT TO condicion TEXTMERGE NOSHOW PRETEXT 15
<<cCTiempo>> and <<cCMandatario>> and <<cCBarrio>>  and <<cCPoligono>> and <<cCParcela>> and <<nCBDT>> and <<nCAdqCom>>
endtext

select * ;
from c1, c2 ;
where ;
     &condicion



Date: Fri, 15 Oct 2010 17:23:23 -0400

Subject: Re: [vfp] Condicion demasiada larga en un select (error: Command contains unrecognized phrase/keyword)

Jose Zurita

unread,
Oct 15, 2010, 5:38:58 PM10/15/10
to publice...@googlegroups.com
Favor de leer la idea que me pasaron y la contestacion que hice, agradezco tu respuesta

> Date: Fri, 15 Oct 2010 14:24:55 -0700
> Subject: [vfp] Re: Condicion demasiada larga en un select (error: Command contains unrecognized phrase/keyword)
> From: pip...@gmail.com
> To: publice...@googlegroups.com

Jose Zurita

unread,
Oct 15, 2010, 5:39:40 PM10/15/10
to publice...@googlegroups.com
Favor de leer la idea que me pasaron y la contestacion que hice, agradezco tu respuesta

> Date: Fri, 15 Oct 2010 14:25:40 -0700

> Subject: [vfp] Re: Condicion demasiada larga en un select (error: Command contains unrecognized phrase/keyword)

IVAN MARTINEZ

unread,
Oct 16, 2010, 3:29:59 AM10/16/10
to publice...@googlegroups.com
Trata de que el filtro que use el select solo lleve las condiciones que
sean pertinentes en ese momento.

Con algo asi

Wfil=""

If ! Empty(par1d)
wfil= wfil + "and campo1 >= par1d "
Endif

If ! Empty(par1h)
wfil= wfil + "and campo1 >= par1h "
Endif

If ! Empty(par2d)
wfil= wfil + "and campo2 >= par2d "
Endif

If ! Empty(par2h)
wfil= wfil + "and campo2 >= par1h "
Endif


Select * from archivo where camp3="COBRADO" &wfil

Ivan Martinez von Halle

>>>-----Mensaje original-----
>>>De: publice...@googlegroups.com
>>>[mailto:publice...@googlegroups.com] En nombre de José
>>>Jiménez Zuryta
>>>Enviado el: Viernes, 15 de Octubre de 2010 04:37 p.m.
>>>Para: Comunidad de Visual Foxpro en Español
>>>Asunto: [vfp] Condicion demasiada larga en un select (error:
>>>Command contains unrecognized phrase/keyword)
>>>

Reply all
Reply to author
Forward
0 new messages