Ayuda con consulta VFP - MySQL

103 views
Skip to first unread message

IRCSA Software

unread,
Oct 8, 2010, 9:14:14 PM10/8/10
to Mundo Visual FoxPro
Hola Foro,

Estoy ejecutando esta consulta desde VFP 9.0 a una BD de MySQL por
ODBC...

TEXT TO cSQLCommand TEXTMERGE NOSHOW PRETEXT 7
SELECT
rfc_cliente,
nombre,
CONCAT_WS(' ', calle, no_exterior, no_interior, colonia, localidad,
municipio, estado) as direccion,
CONCAT_WS(' / ', telefono, email) as contacto
FROM clientes LIMIT 1000
ENDTEXT
cmd = SQLEXEC(lnHandle, cSQLCommand, "curBuscar")

Funciona, pero el cursor "curBuscar" lo crea con el campo "direccion"
como tipo MEMO aun que el resultado sea sólo algunos cuantos
caracteres y no me sirve como MEMO.

Que puedo hacer para que el campo sea CHAR?

Notas:
- el campo "contacto" que también se crea con CONCAT_WS() si es
tipo CHAR, sólo "direccion".
- todos los campos concatenados son tipo VARCHAR en MySQL de
diferentes tamaños:
calle vc 30
no_exterior vc 20
no_interior vc 10
colonia vc 60
referencia vc 80
localidad vc 80
municipio vc 80
estado vc 80
pais vc 80
cp vc 5

Saludos, gracias por su tiempo

Arturo Ramos
www.ircsasoftware.com.mx


tangocaracasivan

unread,
Oct 8, 2010, 10:18:32 PM10/8/10
to mundovis...@googlegroups.com
Sera por el tamaño de las cadenas?

ivan

>>>-----Mensaje original-----
>>>De: mundovis...@googlegroups.com
>>>[mailto:mundovis...@googlegroups.com] En nombre de
>>>IRCSA Software
>>>Enviado el: Viernes, 08 de Octubre de 2010 08:44 p.m.
>>>Para: Mundo Visual FoxPro
>>>Asunto: [Mundo Visual FoxPro] Ayuda con consulta VFP - MySQL

>>>--
>>>_______________________________________________________________
>>>Has recibido este mensaje porque estás suscrito al Grupo
>>>"Mundo Visual FoxPro" de Grupos de Google.
>>>
>>>Para anular la suscripción a este grupo, envía un mensaje a:
>>>mundovisualfox...@googlegroups.com

Cristobal

unread,
Oct 9, 2010, 9:11:24 AM10/9/10
to mundovis...@googlegroups.com
Quiza el tama�o de los campos sea muy ancho, porque realice la misma
operacion con una tabla y me sale "normal" :

SQLEXEC(nHandle, "SELECT TRIM(CONCAT_WS(' ', EMP_PATERNO, EMP_MATERNO,
EMP_NOMBRE)) AS NOMBRE FROM EMPLEADOS")

El resultado me arroja el campo "NOMBRE" con ancho y tipo de c(92).

--------------------------------------------------
From: "tangocaracasivan" <tangocar...@gmail.com>
Sent: Friday, October 08, 2010 9:18 PM
To: <mundovis...@googlegroups.com>
Subject: RE: [Mundo Visual FoxPro] Ayuda con consulta VFP - MySQL

> Sera por el tama�o de las cadenas?


>
> ivan
>
>>>>-----Mensaje original-----
>>>>De: mundovis...@googlegroups.com
>>>>[mailto:mundovis...@googlegroups.com] En nombre de
>>>>IRCSA Software
>>>>Enviado el: Viernes, 08 de Octubre de 2010 08:44 p.m.
>>>>Para: Mundo Visual FoxPro
>>>>Asunto: [Mundo Visual FoxPro] Ayuda con consulta VFP - MySQL
>>>>
>>>>Hola Foro,
>>>>
>>>>Estoy ejecutando esta consulta desde VFP 9.0 a una BD de
>>>>MySQL por ODBC...
>>>>
>>>>TEXT TO cSQLCommand TEXTMERGE NOSHOW PRETEXT 7 SELECT
>>>> rfc_cliente,
>>>> nombre,
>>>> CONCAT_WS(' ', calle, no_exterior, no_interior, colonia,
>>>>localidad, municipio, estado) as direccion,
>>>> CONCAT_WS(' / ', telefono, email) as contacto
>>>> FROM clientes LIMIT 1000
>>>>ENDTEXT
>>>>cmd = SQLEXEC(lnHandle, cSQLCommand, "curBuscar")
>>>>
>>>>Funciona, pero el cursor "curBuscar" lo crea con el campo "direccion"

>>>>como tipo MEMO aun que el resultado sea s�lo algunos cuantos


>>>>caracteres y no me sirve como MEMO.
>>>>
>>>>Que puedo hacer para que el campo sea CHAR?
>>>>
>>>>Notas:

>>>> - el campo "contacto" que tambi�n se crea con CONCAT_WS()
>>>>si es tipo CHAR, s�lo "direccion".


>>>> - todos los campos concatenados son tipo VARCHAR en MySQL

>>>>de diferentes tama�os:


>>>>calle vc 30
>>>>no_exterior vc 20
>>>>no_interior vc 10
>>>>colonia vc 60
>>>>referencia vc 80
>>>>localidad vc 80
>>>>municipio vc 80
>>>>estado vc 80
>>>>pais vc 80
>>>>cp vc 5
>>>>
>>>>Saludos, gracias por su tiempo
>>>>
>>>>Arturo Ramos
>>>>www.ircsasoftware.com.mx
>>>>
>>>>
>>>>--
>>>>_______________________________________________________________

>>>>Has recibido este mensaje porque est�s suscrito al Grupo


>>>>"Mundo Visual FoxPro" de Grupos de Google.
>>>>

>>>>Para anular la suscripci�n a este grupo, env�a un mensaje a:
>>>>mundovisualfox...@googlegroups.com
>
> --
> _______________________________________________________________
> Has recibido este mensaje porque est�s suscrito al Grupo "Mundo Visual


> FoxPro" de Grupos de Google.
>

> Para anular la suscripci�n a este grupo, env�a un mensaje a:
> mundovisualfox...@googlegroups.com
>

Hugo Carlos Aguilar Zapata

unread,
Oct 9, 2010, 10:57:19 AM10/9/10
to mundovis...@googlegroups.com
Aplica la funcion TRIM antes de CONCAT_WS
Ve el ejemplo de Cristobal

Saludos



--
_______________________________________________________________
Has recibido este mensaje porque estás suscrito al Grupo "Mundo Visual

FoxPro" de Grupos de Google.

IRCSA Software

unread,
Oct 9, 2010, 7:33:53 PM10/9/10
to Mundo Visual FoxPro
Gracias Hugo, Cristobal, Ivan

Con TRIM() no se solucionó, partiendo de lo que comentaron sobre el
ancho de los campos me puse a cambiar los anchos en la BD de los
campos...

...Esto es lo que entiendo: Si la suma del tamaño de los campos a
encadenar es mayor o igual a 250 el resultado se almacena en un campo
MEMO, esto no depende del tamaño del resultado real, sino del posible
resultado al encadenar los campos.

...así pues cambie el tamaño de los campos en la BD para que la suma
de sus tamaños sea de 249 y listo, el resultado se muestra en un campo
CHAR y no en un MEMO; para este caso específico, 249 caracteres son
más que suficientes.

Bueno, interesante para tomar nota...

Saludos

Arturo Ramos
www.ircsasoftware.com.mx

IRCSA Software

unread,
Oct 9, 2010, 7:58:16 PM10/9/10
to Mundo Visual FoxPro
Sólo para puntualizar,

el resultado se ve afectado por los espacios que se encadenan con la
función en la consulta:
CONCAT_WS(' ', calle, no_exterior, no_interior, colonia, localidad,
municipio, estado) as direccion,

Así pues, el máximo posible resultado para que sea regresado como CHAR
y no como MEMO es de 254, la suma de los anchos de los campos mas los
caracteres encadenados entre cada uno de ellos, independientemente del
resultado real, pues aun que en la BD el único registro sólo tenga en
el campo 'calle' una letra y el resultado de encadenar solo sea un
caracter se manda a un campo MEMO.

De la ayuda de VFP: Tipo CHAR, 1 byte por carácter hasta 254.

Saludos
Arturo Ramos
www.ircsasoftware.com.mx
Reply all
Reply to author
Forward
0 new messages