Agregar registros en SQL desde un cursor

852 views
Skip to first unread message

fasm

unread,
May 23, 2019, 3:51:03 PM5/23/19
to Comunidad de Visual Foxpro en Español
Buenas tardes, tengo el problema de que no me parmite agregar a una tabla SQL desde un cursor vfp.
El cursor tiene la misma estructura que la tabla SQL.

use mitablavfp alias mitabla in 0
selec * from mitabla where &micondicion into cursor MiCursor
use in mitabla

conexion=thisform.conectasql()
if conexion=1
   lcConsulta = "INSERT INTO TablaSQL SELECT * FROM MiCursor"
   ConsultaOk = SQLEXEC(conexion, lcConsulta) = 1
    IF ConsultaOk then
        WAIT WINDOW 'Actualizado con Exito'
    ELSE
        =MESSAGEBOX('Ocurrió un error')
    ENDIF
else
     =MESSAGEBOX('No se pudo conectar a la Base de Datos',64,'factura.dbf')
endif

 =SQLDISCONNECT(conexion)

Me sale que no se reconoce "MiCursor". Uso el VFP9
Agradezco de antemano sus consejos o ayuda.

Carlos Miguel FARIAS

unread,
May 23, 2019, 4:21:32 PM5/23/19
to Grupo Fox
Tu cursor esta en tu máquina local, el sql se ejecuta en el SGBD remoto, no hay ninguna posibilidad de que el cursor local sea conocido por el SGBD. Tienes que cambiar la forma en que mandas los inserts.
Saludos: Miguel

--
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/68db532f-f7ec-42f7-b4cd-b348b9fb968d%40googlegroups.com.

ZeRoberto

unread,
May 23, 2019, 4:30:53 PM5/23/19
to publicesvfoxpro
Tienes que seleccionar los campos y tiene que ser igual y en el mismo orden tanto en el SELECT como en el el INSERT para que no te cree conflictos

Aca te dejo un Ejemplo

INSERT INTO cajas_lineas 
            (CajaID, 
             UniqueID,
             CorteID, 
             Fecha)
             SELECT CajaID, 
                    UniqueID,
                    CorteID, 
                    Fecha
                    FROM caja_lineas;


Saludos

Ze





Oscar Bonet

unread,
May 23, 2019, 4:38:38 PM5/23/19
to publice...@googlegroups.com
así no funciona de fácil como las nativas dbf de fox.
Tienes que capturar los campos en variables de memoria e implementar rutinas como algo así x ejemplo:

       select ElCursor  
      scan
            scater memvar

             insert tablasql (campo1) values (?m.campo1DelCursor)
          select ElCursor

       endscan

en las lineas del insert colocar la expresion SQL o comando sql de insert

asi lo hice para migrar unas dbf a Sql

_________________
Oscar Bonet

   



De conformidad con el decreto 2242 de Noviembre de 2015, nuestra Compañía está implementando la Facturación Electrónica y según comunicado  100202211-410 del 29 de Junio de 2018 emitido por la DIAN, se nos fijó el 1 de diciembre de 2018 para la emisión de la factura electrónica.
En consecuencia, hemos destinado la cuenta de correo electrónico: 
e-fac...@cialta.com      para recepción y emisión de facturas electrónicas.

Habeas Data: La Compañía Internacional de Alimentos Agropecuarios CIALTA S.A.S. cumple con los requerimientos de la Superintendencia de Industria y Comercio de Colombia sobre el manejo de información de datos personales, lo cual implica tener políticas claras de tratamiento de Base de Datos que usted puede consultar: Politicas Habeas Data 

Si desea tener más información sobre el particular, puede escribirnos al correo habea...@cialta.com 

Luis suescún

unread,
May 23, 2019, 4:51:30 PM5/23/19
to publice...@googlegroups.com
Esa figura( insert into tablasql select * from tabla) solo es aplicable a una sentencia del lado del Server sea en PA, trigguer o query analizer...
Lo que deberías hacer es construir una cadena de inserción registro a registro..


Luis suescún

unread,
May 23, 2019, 4:51:30 PM5/23/19
to publice...@googlegroups.com
Supongo que tablaSql está en un Server y tu aplicación en un cliente siendo así, el cursor está fuera del ámbito de sqlserver....

El jue., 23 may. 2019 14:51, 'fasm' via Comunidad de Visual Foxpro en Español <publice...@googlegroups.com> escribió:

Víctor Hugo Espínola Domínguez

unread,
May 23, 2019, 6:01:01 PM5/23/19
to publice...@googlegroups.com
Se puede enviar un cursor a una tabla de un servidor SQL mediante la clase cursoradapter o un cursor actualizable combinando con la función tableupdate.

Adjunto función para crear un cursor actualizable y una clase basada en cursoradapter.

Víctor.
Lambaré - Paraguay.



cursoractualizable.txt
vhecageneric.txt

fasm

unread,
May 23, 2019, 9:06:08 PM5/23/19
to Comunidad de Visual Foxpro en Español
Gracias, veo que tendré que cambiarlo.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

fasm

unread,
May 23, 2019, 9:06:38 PM5/23/19
to Comunidad de Visual Foxpro en Español
Lo pondré en práctica. Gracias.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

fasm

unread,
May 23, 2019, 9:08:09 PM5/23/19
to Comunidad de Visual Foxpro en Español
Lo habia pensado como segunda opción, pero quería hacerlo de una manera mas corta. Ni modo a poner en práctica tu ejemplo. Gracias.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.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 publice...@googlegroups.com.

fasm

unread,
May 23, 2019, 9:09:05 PM5/23/19
to Comunidad de Visual Foxpro en Español
Efectivamente, ahora entiendo porque no me reconocía el cursor.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

fasm

unread,
May 23, 2019, 9:10:57 PM5/23/19
to Comunidad de Visual Foxpro en Español
Muy interesante esa función. Gracias por la ayuda.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a publice...@googlegroups.com.

mpulla

unread,
May 25, 2019, 8:19:06 AM5/25/19
to Comunidad de Visual Foxpro en Español
Hola fasm.

Puedes generar una cadena xml y mandarlo a un sp en sql sever mira el link

Saludos
Mauricio

Luis suescún

unread,
May 27, 2019, 11:49:03 AM5/27/19
to publice...@googlegroups.com
Mpulla al parecer el link que enviaste no tiene nada que ver con generar un xml para enviar a sql a traves de un sp.
Podrías validar por favor.

mil gracias


--
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/4a1a26dd-57c4-437f-a27a-e726a6187c93%40googlegroups.com.

Luis suescún

unread,
May 27, 2019, 11:51:14 AM5/27/19
to publice...@googlegroups.com
Disculpa, ahora que miro mas detenidamente si...


El sáb., 25 de may. de 2019 a la(s) 07:19, 'mpulla' via Comunidad de Visual Foxpro en Español (publice...@googlegroups.com) escribió:
--
Reply all
Reply to author
Forward
0 new messages