Hacer desde VFP un INSERT INTO a SQL Server

571 views
Skip to first unread message

integral

unread,
Dec 13, 2022, 12:19:44 PM12/13/22
to Comunidad de Visual Foxpro en Español
Hola Amigos. 
Estoy haciendo una prueba aprendiendo a grabar registros en una tabla de SQL Server 2008R2, pero en VFP me sale un mensaje de error al tratar de
grabar el formulario indicando que el comando contiene una frase/palabra clave no reconocida

Aquí dejo el código para ver si me pueden ayudar con lo que estoy haciendo mal.  
Gracias anticipadas.

SQLEXEC(cn,"INSERT INTO Consumo( fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot ) ;
    VALUES ( ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot )")


Error_VFP.jpg

HernanCano

unread,
Dec 13, 2022, 12:47:34 PM12/13/22
to Comunidad de Visual Foxpro en Español
Debe ser que el punto y coma para indicar que el comando continúa en el sgte reglón, no es muy acertado.

Sólo éso se me ocurre.

¿Qué tal si reescribes el comando evitando el punto y coma en la forma en que lo estás haciendo?


Gerardo Cagnola

unread,
Dec 13, 2022, 1:14:56 PM12/13/22
to Comunidad de Visual Foxpro en Español
así no se "corta" una cadena en fox...

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/publicesvfoxpro/cd93aa1e-b4fd-43e1-8b40-029075887d17n%40googlegroups.com.

Edwin Duran

unread,
Dec 13, 2022, 2:12:12 PM12/13/22
to Comunidad de Visual Foxpro en Español
Para que tu codigo se vea mas limpio y mas claro, lo del insert into colocalo dentro de un 
TEXT TO cmd NOSHOW text

INSERT INTO Consumo( fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot ) 
                       VALUES ( ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot )
ENDTEXT

SQLEXEC(cn, cmd)

Alberto Gonzalez Diaz

unread,
Dec 13, 2022, 3:53:57 PM12/13/22
to publice...@googlegroups.com
Me suena a que la cadena es muy larga, pártela en 2 variables previamente y luego las une sumándolas

Var1=‘INSERT INTO Consumo( fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot ) ‘

Var2=‘ VALUES ( ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot )’

SQLEXEC(cn,Var1+Var2)

Cuidado con las comillas y el espacio entre las variables. Espero te sirva

Enviado desde mi móvil

El 13 dic 2022, a las 8:12 p. m., Edwin Duran <edwinn...@gmail.com> escribió:

Para que tu codigo se vea mas limpio y mas claro, lo del insert into colocalo dentro de un 
--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

mpulla

unread,
Dec 13, 2022, 4:52:51 PM12/13/22
to Comunidad de Visual Foxpro en Español
Hola Integral.
Prueba

SQLEXEC(cn, "INSERT INTO Consumo( fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot )" + ;

    "VALUES ( ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot )")

Saludos.
Mauricio

Gerardo Cagnola

unread,
Dec 13, 2022, 6:40:04 PM12/13/22
to publice...@googlegroups.com
pero claroooooo, es un string....

pd: en estos casos debes probar la sentencia directamente en el sql server, así te sacas las dudas adonde está el problema

--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.

Victor Espina

unread,
Dec 14, 2022, 8:23:27 AM12/14/22
to Comunidad de Visual Foxpro en Español
En SQL SErver el  punto y coma se usa para separar un comando de otro, asi que en la practica lo que estas haciendo es enviar dos comandos:

INSERT INTO ...
VALUES (...

La sintaxis correcta seria:

SQLEXEC(cn,"INSERT INTO Consumo ( fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot ) "+;
   "VALUES ( ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot )"
)

O, mejor aun, como te mencionaron en otra respuesta, usa TEXT - ENDTEXT para mejor legibilidad:

TEXT TO cSQL NOSHOW
INSERT INTO Consumo (
   fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,
   despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot
) VALUES ( 
   ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,
   ?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot 
)
ENDTEXT
SQLEXEC(cn, cSQL)


Victor Espina

Miguel Antúnez

unread,
Dec 14, 2022, 8:55:36 AM12/14/22
to publice...@googlegroups.com
Hola Integral, hace muchos años publiqué esta documentación, en el cual explico un framework para trabajar vfp con SQL Server, que hasta ahora lo aplico y estoy con la versión SQL Server 2019, en su oportunidad lo elabore con SQL Server 2005.
Espero que te sea de utilidad y puedas sacarle provecho.


Saludos.
Miguel Antúnez C.


--
Blog de la Comunidad Visual FoxPro en Español: http://comunidadvfp.blogspot.com
---
Has recibido este mensaje porque estás suscrito al grupo "Comunidad de Visual Foxpro en Español" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publicesvfoxp...@googlegroups.com.


--
Miguel Angel Antúnez Camones
mant...@gmail.com

Dsan

unread,
Dec 14, 2022, 9:39:13 AM12/14/22
to publice...@googlegroups.com


Saludos a todos..

Maestro Miguel Antúnez, excelente, https://www.monografias.com/trabajos-pdf/visual-foxpro-sql-server/visual-foxpro-sql-server, con eso me terminé de afinar para separar las capas en vfp con sql server, recuerdo que hasta nos impartió una mini capacitación explicando todo eso, lastima que no se subió a youtube,  algo que estaba en auge en ese momento el xml aun lo uso, aunque ahora tengo entendido que tambien acepta json SQL Server,

Integral con eso vas de viaje y yo a la orden, en el grupo de whatsapp, comunidad vfp, no es perfecto, pero  se procura ayudar a los que consulta, es difícil ponerse de acuerdo 5, ahora que contamos más de 160++, quedan invitados https://chat.whatsapp.com/D5HqKW5IpDdGAMZrAlBONk

Dsanchez


integral

unread,
Dec 14, 2022, 9:52:49 AM12/14/22
to Comunidad de Visual Foxpro en Español
Que tal Amigos :

Gracias a todos por sus comentarios y sugerencias, tomar la programacion despues de mas de 7 años es para mi como empezar de nuevo...
Estoy por mi cuenta repasando para poder postular el proximo año a algun trabajo...

 Opte por el siguiente ejemplo que denota mas claridad...

TEXT TO cSQL NOSHOW
INSERT INTO Consumo (
   fecha_con,deuda_con,cod_gene,prod_gene,prod_name,ruta_prod,hora_con,
   despacha,obs_prod,cantidad,descrip,prec_unit,valor_tot,consu_tot
) VALUES ( 
   ?cFecha_con,?cDeuda_con,?cCod_gene,?cProd_gene,?cProd_name,?cRuta_prod,?cHora_con,
   ?cDespacha,?cObs_prod,?cCantidad,?cDescrip,?cPrec_unit,?cValor_tot,?cConsu_tot 
)
ENDTEXT
SQLEXEC(cn, cSQL)

Saludos,
INTEGRAL

José Antonio Peña Martínez

unread,
Dec 14, 2022, 12:29:05 PM12/14/22
to publice...@googlegroups.com
Perfecto, Yo uso VFP solo para algunas cosas más gráficas que mi lenguaje principal no tiene, en la representación en PDF de la factura electrónica en México usó un ejecutable que crea cursores para su posterior envió a un reporte., y alli lleva las sentencias que comentan pero lo veo mas "limpio" sin los signos de interrogacion (?), estos signos porque se usan. o me considero experto en VFP y solo medio una duda.

Yo uso:

INSERT INTO cGenerales (Versions) VALUES ("Nada")

ó

NSERT INTO cConceptos ( Linea, Cantidad, ClavePS, ClaveUni, noID, descripcio, importe, descuento, unidad, valorUnita, Impuestos, Banda, Orden) ;
VALUES (contador , 0, "", "", "", "", 0, 0, "", 0,"",3, 3)

Donde los campos del segundo ejemplo podrían ser variables como "contador".

Saludos!



--
Desarrollo de Sistemas TecnoPro
José Antonio Peña

Saludos!

Victor Espina

unread,
Dec 14, 2022, 1:15:16 PM12/14/22
to Comunidad de Visual Foxpro en Español
El problema de esa tecnica es que en los campos string, si el valor contiene el mismo caracter que estas usando como delimitador de cadenas, vas a tener un problema.  Esto no ocurre cuando envias el valor como variable (con ?).

Victor Espina

José Antonio Peña Martínez

unread,
Dec 14, 2022, 1:17:09 PM12/14/22
to publice...@googlegroups.com
Correcto, gracias Victor.

Saludos!

Germán Fabricio Valdez

unread,
Jan 16, 2023, 6:17:55 PM1/16/23
to Comunidad de Visual Foxpro en Español
si quieren entrar al mundo de los servidores e internet les recomiendo mi  clase actualizada con soporte y capacitacion.
Reply all
Reply to author
Forward
0 new messages