uso de variable dentro de una sentencia SQL

974 views
Skip to first unread message

Euro Nava

unread,
Nov 24, 2011, 10:34:49 AM11/24/11
to Comunidad de Visual Foxpro en Español
hola foro, requiero efectuar una consulta utilizando dos tablas, los
nombre de las mismas están almacenadas dentro de variables, en el
código hago la sustitución de las variables por una constante
utilizando la función & pero al ejecutarlo arroja un error que no
logro corregir.

les simplifico el código utilizado a continuación:

gracias de antemano

ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'


SELECT &ARCHIV.free, &ARCHIV.nroreq, &ARCHIV.cant, &ARCHIV.unidad,
&ARCHIV.articulo, &ARCHIV10.* ;
FROM &ARCHIV, &ARCHIV10 ;
WHERE &ARCHIV10.nroreq = &ARCHIV.nroreq ;
HAVING &ARCHIV.free == "X" ;
ORDER BY &ARCHIV10.codpv, &ARCHIV.articulo ;
INTO CURSOR Query

Oscar Garcia

unread,
Nov 24, 2011, 10:40:58 AM11/24/11
to Comunidad de Visual Foxpro en Español
¿Ya probaste quitandole el .DBF?, es decir asi:

ARCHIV='MYFILE01'
ARCHIV10='MYFILE02'

Pablo Daniel

unread,
Nov 24, 2011, 10:50:09 AM11/24/11
to Comunidad de Visual Foxpro en Español
Hola:

La verdad, no encuentro error en lo que pusiste. Yo te recomendaría
que armes una cadena de caracteres con la consulta completa y recién
después utilices &. Por ejemplo (haciendo uso de TEXT - ENDTEXT, que
justo lo estábamos tratando en otro tema del grupo):

******************************************************
ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'

TEXT TO consulta NOSHOW TEXTMERGE

SELECT <<ARCHIV>>.free, <<ARCHIV>>.nroreq, <<ARCHIV>>.cant,
<<ARCHIV>>.unidad,
<<ARCHIV>>.articulo, <<ARCHIV10>>.* ;
FROM <<ARCHIV>>, <<ARCHIV10>> ;
WHERE <<ARCHIV10>>.nroreq = <<ARCHIV>>.nroreq ;
HAVING <<ARCHIV>>.free == "X" ;
ORDER BY <<ARCHIV10>>.codpv, <<ARCHIV>>.articulo ;
INTO CURSOR Query

ENDTEXT

&consulta
******************************************************

Además, de esta forma, podrías mostrar en pantalla la consulta antes
de ejecutarla, como para verificar sintaxis y valores.

Suerte.
------------------------------------------------------------------------------------------------------------------------------

Euro J. Nava L.

unread,
Nov 24, 2011, 10:59:00 AM11/24/11
to publice...@googlegroups.com
Si Oscar lo he probado de las siguientes maneras:

ARCHIV='MYFILE01'
ARCHIV10='MYFILE02'

ARCHIV='MYFILE01.'
ARCHIV10='MYFILE02.'

ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Oscar Garcia
Enviado el: Jueves, 24 de Noviembre de 2011 11:11 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: uso de variable dentro de una sentencia SQL

¿Ya probaste quitandole el .DBF?, es decir asi:

ARCHIV='MYFILE01'
ARCHIV10='MYFILE02'

-----
Se certificó que el correo no contiene virus.
Comprobada por AVG - www.avg.es
Versión: 10.0.1411 / Base de datos de virus: 2092/4036 - Fecha de la
versión: 24/11/2011

Walter R. Ojeda Valiente

unread,
Nov 24, 2011, 11:05:50 AM11/24/11
to publice...@googlegroups.com
Es lo más correcto.

Siempre es importante tener la posibilidad de visualizar la cadena que se está enviando al Servidor para poder facilmente descubrir errores de lógica o de sintaxis.

lcConsulta = .... lo que sea ....

=MessageBox(lcConsulta)

Saludos.

Walter.



> Date: Thu, 24 Nov 2011 07:50:09 -0800
> Subject: [vfp] Re: uso de variable dentro de una sentencia SQL
> From: pablo.dan...@gmail.com
> To: publice...@googlegroups.com

mpulla

unread,
Nov 24, 2011, 11:11:24 AM11/24/11
to Comunidad de Visual Foxpro en Español
Prueba con:

ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'

SELECT x.free, x.nroreq, x.cant, x.unidad, x.articulo, y.*;
FROM (ARCHIV) As x, (ARCHIV10) As y;
WHERE x.nroreq = y.nroreq;
HAVING x.free == "X" ;
ORDER BYy.codpv, x.articulo ;
INTO CURSOR Query

Saludos.
Mauricio

Euro J. Nava L.

unread,
Nov 24, 2011, 11:20:01 AM11/24/11
to publice...@googlegroups.com
Pablo nunca he utilizado esta función sin embargo la copie tal cual como me
la enviaste y al ejecutarlo arroja el error en la línea

&consulta

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Pablo Daniel
Enviado el: Jueves, 24 de Noviembre de 2011 11:20 a.m.


Para: Comunidad de Visual Foxpro en Español

Asunto: [vfp] Re: uso de variable dentro de una sentencia SQL

Hola:

ENDTEXT

&consulta
******************************************************

Suerte.
----------------------------------------------------------------------------
--------------------------------------------------

Euro J. Nava L.

unread,
Nov 24, 2011, 11:30:10 AM11/24/11
to publice...@googlegroups.com
Dio error

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de mpulla
Enviado el: Jueves, 24 de Noviembre de 2011 11:41 a.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: uso de variable dentro de una sentencia SQL

Prueba con:

ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'

Saludos.
Mauricio

Euro J. Nava L.

unread,
Nov 24, 2011, 11:34:34 AM11/24/11
to publice...@googlegroups.com

El error esta con la sustitución de la variable por constante que no toma el nombre real de la tabla

Pablo Daniel

unread,
Nov 24, 2011, 11:23:29 AM11/24/11
to Comunidad de Visual Foxpro en Español
Probá con:
MESSAGEBOX(consulta)

antes de ejecutar:
& consulta

Como lo sugirió Walter, como para ver si hay algo raro en la
consulta... Después de la cláusula ENDTEXT, "consulta" es una variable
String que podés consultar y ver como cualquier otra y que debería
tener la sentencia exacta que querés ejecutar.

Éxitos.
-----------------------------------------------------------------------------------------------------------------------------

mpulla

unread,
Nov 24, 2011, 12:04:17 PM11/24/11
to Comunidad de Visual Foxpro en Español
me falto un espacio en order by prueba de nuevo

SELECT x.free, x.nroreq, x.cant, x.unidad, x.articulo, y.*;
FROM (ARCHIV) As x, (ARCHIV10) As y;
WHERE x.nroreq = y.nroreq;
HAVING x.free == "X" ;
ORDER BY y.codpv, x.articulo ;
INTO CURSOR Query

Euro J. Nava L.

unread,
Nov 24, 2011, 1:10:52 PM11/24/11
to publice...@googlegroups.com
El código tal cual y como lo estas pasando arroja un error

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de mpulla

Enviado el: Jueves, 24 de Noviembre de 2011 12:34 p.m.

Euro J. Nava L.

unread,
Nov 24, 2011, 1:45:20 PM11/24/11
to publice...@googlegroups.com
Amigos las sugerencias que hasta ahora he recibido no me han ayudado a
solucionar el problema

De todas maneras gracias por su ayuda


-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de mpulla

Enviado el: Jueves, 24 de Noviembre de 2011 12:34 p.m.

Mauricio Molinero,

unread,
Nov 24, 2011, 1:45:26 PM11/24/11
to publice...@googlegroups.com
Hola Euro,

Como te indicaron los colegas es mejor que utilices TEXT ...ENDTEXT para armar esa cadena asi podes visualizarla antes de enviar al servidor.

Si todavia no logras hacerla funcionar, envianos tu codigo actualizado. Si es posible algo que podamos ejecutar y probar.

Saludos!

Mauricio R. Molinero,

Euro J. Nava L.

unread,
Nov 24, 2011, 2:02:42 PM11/24/11
to publice...@googlegroups.com

El código sigue siendo el mismo que envié al inicio del hilo

 

Saludos

Guillermo Gimenez

unread,
Nov 24, 2011, 3:04:37 PM11/24/11
to publice...@googlegroups.com
Probale de esta manera:
 
ARCHIV='MYFILE01.DBF'
ARCHIV10='MYFILE02.DBF'

SELECT x.free, x.nroreq, x.cant, x.unidad, x.articulo, y.*;
    FROM &ARCHIV x JOIN &ARCHIV10 y ON x.nroreq = y.nroreq;
    WHERE x.free == "X" ;

    ORDER BY y.codpv,x.articulo;
    INTO CURSOR Query

mpulla

unread,
Nov 24, 2011, 3:14:50 PM11/24/11
to Comunidad de Visual Foxpro en Español
puedes decir cual es el error, acabo de correr el sql y no tiene
problemas...

Saludos.
Mauricio

Euro J. Nava L.

unread,
Nov 24, 2011, 4:00:10 PM11/24/11
to publice...@googlegroups.com
Lo conseguí, corregí y todo fenomenal.... Gracias amigos por su interés en
ayudarme

Un abrazo

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de mpulla

Enviado el: Jueves, 24 de Noviembre de 2011 03:45 p.m.


Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: uso de variable dentro de una sentencia SQL

puedes decir cual es el error, acabo de correr el sql y no tiene
problemas...

Saludos.
Mauricio

Reply all
Reply to author
Forward
0 new messages