FoxPro/Visual FoxPro - Pasar datos de Cursor a tabla en MySql

 
Vista:

Pasar datos de Cursor a tabla en MySql

Publicado por Pablo (Argentina) (433 intervenciones) el 11/08/2011 23:54:49
Hola Amigos del foro, hace unos dias que vengo dando vueltas con este tema y no lo puedo resolver, en un form con dbf no tengo drama lo hago funcionar bien y no tengo problemas pero en mysql ni idea!!!!!!!!!!!!!!!!!!!
El tema es el siguiente tengo un grid, en el init del form creo un cursor temporal para ingresar los articulos al stock, entonces voy llenanado ese grid con renglones hasta donde quiero, pues bien una vez que cargue todo y veo que esta todo bien, mediante un boton quiero pasar todos esos datos que tengo en el grid que a su vez estan en el cursor temporal pasarlos a la tabla original que tengo creada en la bd de MySql. Antes lo hacia con un append from y un select y ya esta con 3 lineas de codigo pasaba todos los datos del cursor a las dbf pero en mysql todo eso no me funciona.
Como es el tema???, algun ejemplo por favor.

Muchas Gracias

Pablo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Pasar datos de Cursor a tabla en MySql

Publicado por Juan Manuel Cruz (512 intervenciones) el 12/08/2011 11:20:56
Tendrás que trabajar con

* Vistas remotas actualizables, o
* SQL Pass trough, o
* CursorAdapters.

En cualquier caso, es más de lo que se te puede explicar en un correo o dos, tendrás que ponerte a mirar la documentación sobre VFP+SQL (los fundamentos son similares, sea el motor externo que sea)

En particular me decanto por los CursorAdapters, porque una vez hecha la conexión, trabajas de manera transparente como si fuera una tabla DBF cualquiera (ojo, solo en apariencia)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

Pasar datos de Cursor a tabla en MySql

Publicado por Mauricio (1541 intervenciones) el 12/08/2011 15:08:10
si te decides a usar cursorAdapter, aca esta este ejemplo: http://es.scribd.com/doc/41618322/Cursor-Adapter-Sample
Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar datos de Cursor a tabla en MySql

Publicado por Cesar Diez - Canseco (65 intervenciones) el 17/08/2011 21:56:22
Hola Pablo,
Aqui pequeno ejemplo:

Primero nos conectamos a MySql mediante una cadena de conexion:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
_lcDBname="El nombre de tu base de datos"   && Nombre database
_lcserver="192.168.2.205"                                     && alias / IP server
_lcUsername="Tu usario"                                      &&Usuario por defecto root
_lcpswDB="Tu Clave"                                              && password database
 
_lcDSNLess="DRIVER={MySQL ODBC 5.1 Driver};" + ;
                    "SERVER="+_lcserver+";" + ;
                    "PORT=3306;" + ;
                    "UID="+_lcUsername+";" + ;
                    "PWD="+_lcpswDB+";" + ;
                    "DATABASE="+_lcDBname+";"
 
PUBLIC _Conexion           && Variable publica que contiene la cadena de conexion.
_Conexion =0
SQLSETPROP(0,"DispLogin",3)
_Conexion=SQLSTRINGCONNECT(_lcDSNLess)
IF _Conexion>=1
	MESSAGEBOX('Bienvenido a la Base de Datos : '+alltrim(_lcDBname)+', en : '+alltrim(_lcserver)+',;
'+_lcUsername+' ...!',64,'Conexión establecida!')
ELSE
	MESSAGEBOX('Conexion Fallida...!',48,'Conexion a la Base de Datos')
ENDIF

Una vez conectados...
levantar todo lo que hay en el cursor...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
select tucursor
GO TOP
	I=0
	Trecc=RECCOUNT()
	SCAN
		@ 36,10 SAY "UPLOADING FROM VENDEDORES.DBF TO VENDEDORES.MYD "+STR(RECNO())+" RECORD(S) OF "+STR(Trecc)
		c1=codigo
		c2=nombre
		c3=dir1
		c4=dir2
		c5=telecasa
		c6=celular
		c7=email
 
		TEXT TO	XSQL  NOSHOW
			INSERT INTO vendedores
			(codigo,nombre,dir1,dir2,telecasa,celular,email)
			VALUES
   			(?c1,?c2,?c3,?c4,?c5,?c6,?c7)
		ENDTEXT
 
		IF SQLEXEC(cconexion,XSQL) < 0
			WAIT CLEAR
			=AERROR(aerrores)
			=MESSAGEBOX(aerrores[2]+" No. :"+ALLTRIM(STR(aerrores[1])),"Error en tabla vendedores")
			RELEASE aerrores
			EXIT
		ELSE
			I=I+1
			@ 37,10 SAY STR(I)+" RECORDS(S) INSERTED"
*!*				INKEY(0.01)
		ENDIF
	ENDSCAN

Yo puse un mensaje para saber cuantos registros se van leyendo y cuantos se van grabando pero si tu deseas lo puedes borrar.

Saludos desde Peru
Cesar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Pasar datos de Cursor a tabla en MySql

Publicado por Carlos E. (1 intervención) el 14/11/2016 17:57:52
Hola César Diez Canseco, buen día...
Está muy bien lo últmo que has puesto aquí en este tema...
Pero como seria al modificar o actualizar asi tambien varios registros
de un cursor a la tabla de mysql...hice lo mismo pero con el update
pero me actualiza todos los registros con el ultimo registro del
cursor...aqui te pongo el codigo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
SELE &WCURSOR
   GO TOP
   J= 0
   TRECC= RECC()
   SCAN
      WAIT WIND NOWA PROP("MODIFICANDO ITEM: "+STR(RECNO())+" REGISTRO(S) DE: "+STR(TRECC))
      SELE &WCURSOR
      *SELE DOCUM2
      C2= RECN()
      C6= TITULO1
      C7= TITULO2
      C8= FECHA
      C9= ESTADO
      C10= TITULO
      C11= DUPLICADOS
      C12= FECHGRAB
      C13= HORAGRAB
      C14= USUARIO
      *WAIT WIND PROP("ITEM: "+STR(C2))
      TEXT TO XSQL NOSHOW
           UPDATE DOCUMENTOS SET TITULO1= ?C6,TITULO2= ?C7,FECHA= ?C8,ESTADO= ?C9,
           TITULO= ?C10,DUPLICADOS= ?C11,FECHGRAB= ?C12,HORAGRAB= ?C13,USUARIO= ?C14
           WHERE IDSUMI= ?WIDSUMI
      ENDTEXT
      IF SQLEXEC(LNHANDLE,XSQL) < 0
         WAIT CLEAR
         =AERROR(AERRORES)
         =MESSAGEBOX(AERRORES[2]+" NO. :"+ALLT(STR(AERRORES[1])),"NO SE GUARDO EL REGISTRO...")
         RELE AERRORES
         EXIT
       ELSE
         J= J+1
         WAIT WIND NOWA PROP("REGISTRO(S) MODIFICADO(S): ")+STR(J)
         BROW NOED NORM IN WIND FORM1
         *!* INKEY(0.01)
      ENDI
   ENDS
   =SQLCOMMIT(LNHANDLE)

No me actualiza la tabla en mysql, con los datos del cursor q los traigo a un grid...solo me
actualiza todos los registros de la tabla mysql con el ultimo registro del cursor...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar