Sentencia SQL de mas de 255 carácteres

14/12/2004 - 22:48 por Carlos Joaniquet Tamburini | Informe spam
Hola, para hacer una consulta por SPT utilizo TEX ...ENDTEXT según vi
que recomendaba un compañero del foro, y lo hago de la siguiente manera:

TEXT TO comandoMySQL1 TEXTMERGE NOSHOW PRETEXT 7
SELECT *
FROM GPDAT.M01
LEFT OUTER JOIN GPDAT.M04
ON M01.M04COD = M04.M04COD
LEFT OUTER JOIN GPDAT.M02
ON M01.M02COD = M02.M02COD
.
.etc
.

LEFT OUTER JOIN GPDAT.M03
ON M01.M03COD = M03.M03COD
WHERE M01.M01ASU = <<numeroFicha>>
ENDTEXT

IF SQLEXEC(nConexion,comandoMySQL1,'cursorCabecera') = 1.. etc

El problema es que cuando comandMySQL1 le asigno una cadena larga me da
error. Como podría hacer para que la cadena no tenga límite?
Gracias.

Preguntas similare

Leer las respuestas

#6 Luis María Guayán
16/12/2004 - 16:38 | Informe spam
Las variables no tienen el limite de 255 caracteres que dices, los 255
caracteres es un límite de la longitud de una sentencia VFP:

Ej
lc = REPLICATE("*",1024)
? LEN(lc)
? lc

La solución es esta:
ENDTEXT) --
http://www.panoramabox.com/GoPub.as...bj"09

Quizás tengas otro problema por el cual te lanza el error.


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Carlos Joaniquet Tamburini" escribió en el
mensaje news:
Muchísimas gracias por las respuestas. No me expliqué bien: el único
problema es que si la cadena excede de 255 carácteres, la variable de


texto
"comadoMySQL1" no lo puede soportar por el límite físico de las variables


a
255 carácteres (creo que es ese), por lo que necesitaría un tipo de


variable
que no tenga límite. Creo que Omar ha dado en el clavo, pero me


interesaría
mas que la instrucción SQL estubiera dentro del código.
Muchas gracias de nuevo por vuestra atención.


"Carlos Joaniquet Tamburini" escribió en el
mensaje news:
> Hola, para hacer una consulta por SPT utilizo TEX ...ENDTEXT según


vi
> que recomendaba un compañero del foro, y lo hago de la siguiente manera:
>
> TEXT TO comandoMySQL1 TEXTMERGE NOSHOW PRETEXT 7
> SELECT *
> FROM GPDAT.M01
> LEFT OUTER JOIN GPDAT.M04
> ON M01.M04COD = M04.M04COD
> LEFT OUTER JOIN GPDAT.M02
> ON M01.M02COD = M02.M02COD
> .
> .etc
> .
>
> LEFT OUTER JOIN GPDAT.M03
> ON M01.M03COD = M03.M03COD
> WHERE M01.M01ASU = <<numeroFicha>>
> ENDTEXT
>
> IF SQLEXEC(nConexion,comandoMySQL1,'cursorCabecera') = 1.. etc
>
> El problema es que cuando comandMySQL1 le asigno una cadena larga me da
> error. Como podría hacer para que la cadena no tenga límite?
> Gracias.
>
>


Respuesta Responder a este mensaje
#7 Carlos Joaniquet Tamburini
17/12/2004 - 00:52 | Informe spam
Luis María, gracias por tu respuesta. (aprovecho para felicitarte por todos
tus artículos, y sobretodo por el de Word (me ha salvado la vida¡¡¡¡).
En la referencia que me das, Esparta dice: "Como es bien sabido, las
constantes de tipo caracter de VFP están limitadas a 255 caracteres, por lo
que pudiera dejarnos limitado el cómo codificar sentencias muy largas, hay
varias soluciones..."
Ya había leído este artículo, aunque no recordaba donde, y por ello me animé
a utilizar TEXT...ENDTEXT. Cuando le paso a la variable el contenido del
texto no me da problema, pero sí al hacer "SQLEXEC(numeroConexion,
variableSentenciaSQL, miCursor)" cuando la variable contiene una cadena muy
larga.
Pero seguro que tienes razón y el problema está en algún error en el comando
SQL. Lo reviso. Muchas gracias.


"Luis María Guayán" escribió en el mensaje
news:
Las variables no tienen el limite de 255 caracteres que dices, los 255
caracteres es un límite de la longitud de una sentencia VFP:

Ej
lc = REPLICATE("*",1024)
? LEN(lc)
? lc

La solución es esta:
ENDTEXT) --
http://www.panoramabox.com/GoPub.as...bj"09

Quizás tengas otro problema por el cual te lanza el error.


Luis María Guayán
Tucumán, Argentina
________________________________
SysOp de www.PortalFox.com
Microsoft Visual FoxPro MVP
________________________________
La palabra imposible solo figura
en el diccionario de los tontos


"Carlos Joaniquet Tamburini" escribió en el
mensaje news:
> Muchísimas gracias por las respuestas. No me expliqué bien: el único
> problema es que si la cadena excede de 255 carácteres, la variable de
texto
> "comadoMySQL1" no lo puede soportar por el límite físico de las


variables
a
> 255 carácteres (creo que es ese), por lo que necesitaría un tipo de
variable
> que no tenga límite. Creo que Omar ha dado en el clavo, pero me
interesaría
> mas que la instrucción SQL estubiera dentro del código.
> Muchas gracias de nuevo por vuestra atención.
>
>
> "Carlos Joaniquet Tamburini" escribió en el
> mensaje news:
> > Hola, para hacer una consulta por SPT utilizo TEX ...ENDTEXT según
vi
> > que recomendaba un compañero del foro, y lo hago de la siguiente


manera:
> >
> > TEXT TO comandoMySQL1 TEXTMERGE NOSHOW PRETEXT 7
> > SELECT *
> > FROM GPDAT.M01
> > LEFT OUTER JOIN GPDAT.M04
> > ON M01.M04COD = M04.M04COD
> > LEFT OUTER JOIN GPDAT.M02
> > ON M01.M02COD = M02.M02COD
> > .
> > .etc
> > .
> >
> > LEFT OUTER JOIN GPDAT.M03
> > ON M01.M03COD = M03.M03COD
> > WHERE M01.M01ASU = <<numeroFicha>>
> > ENDTEXT
> >
> > IF SQLEXEC(nConexion,comandoMySQL1,'cursorCabecera') = 1.. etc
> >
> > El problema es que cuando comandMySQL1 le asigno una cadena larga me


da
> > error. Como podría hacer para que la cadena no tenga límite?
> > Gracias.
> >
> >
>
>


Respuesta Responder a este mensaje
#8 Ricardo Passians
17/12/2004 - 12:44 | Informe spam
Y no te funciona definiendo la variable como MEMO.?

Ej. Local SelectCMD AS Memo
..
..

"Carlos Joaniquet Tamburini" wrote in message
news:
Muchísimas gracias por las respuestas. No me expliqué bien: el único
problema es que si la cadena excede de 255 carácteres, la variable de


texto
"comadoMySQL1" no lo puede soportar por el límite físico de las variables


a
255 carácteres (creo que es ese), por lo que necesitaría un tipo de


variable
que no tenga límite. Creo que Omar ha dado en el clavo, pero me


interesaría
mas que la instrucción SQL estubiera dentro del código.
Muchas gracias de nuevo por vuestra atención.


"Carlos Joaniquet Tamburini" escribió en el
mensaje news:
> Hola, para hacer una consulta por SPT utilizo TEX ...ENDTEXT según


vi
> que recomendaba un compañero del foro, y lo hago de la siguiente manera:
>
> TEXT TO comandoMySQL1 TEXTMERGE NOSHOW PRETEXT 7
> SELECT *
> FROM GPDAT.M01
> LEFT OUTER JOIN GPDAT.M04
> ON M01.M04COD = M04.M04COD
> LEFT OUTER JOIN GPDAT.M02
> ON M01.M02COD = M02.M02COD
> .
> .etc
> .
>
> LEFT OUTER JOIN GPDAT.M03
> ON M01.M03COD = M03.M03COD
> WHERE M01.M01ASU = <<numeroFicha>>
> ENDTEXT
>
> IF SQLEXEC(nConexion,comandoMySQL1,'cursorCabecera') = 1.. etc
>
> El problema es que cuando comandMySQL1 le asigno una cadena larga me da
> error. Como podría hacer para que la cadena no tenga límite?
> Gracias.
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida