Nuevo en el Grupo, usando FoxyDB 2.5 y una duda (entre muchas)

196 views
Skip to first unread message

Eduardo Ihidoype

unread,
Jun 10, 2024, 4:40:57 PMJun 10
to Comunidad de Visual Foxpro en Español
En esta rutina, si agrego de a una fila al cursor, el UPDATE me funciona, si agrego varias filas, el cursor lo veo bien, pero el UPDATE da .F.
Que estoy haciendo mal?

oDb.Query('Select * from codes where id > ' + ALLTRIM(STR(idfinal)), 'codes')
oDb.CursorEdit('codes')

** este archivo de igual formato, se copia bien en el cursor, pero da error en UPDATE
*APPEND FROM C:\dbfs\nmrosnuevos.dbf

** con estas tres líneas, el UPDATE da OK (lo que indicaría que el resto del proceso está bien)
APPEND BLANK
 replace id WITH nmrosnuevos.id
 replace nmro WITH nmrosnuevos.nmro

If oDb.CursorChanges('codes')
  resupdate = odb.Update('codes')
  MESSAGEBOX(resupdate)
  If oDb.Commit()
    MESSAGEBOX("commit OK")
    use  
  Endif
ENDIF

Antonio Meza

unread,
Jun 10, 2024, 6:27:12 PMJun 10
to Comunidad de Visual Foxpro en Español
Hola!!

Cual es el codigo de error que te devuelve el update, lo puedes ver en el valor de la propiedad oDb.error_Code y si te muestra algún error ODBC 

Te comento que nunca he usado "Append FROM" con cursores con buffering.

saludos

Francisco

unread,
Jun 11, 2024, 7:11:39 AMJun 11
to Comunidad de Visual Foxpro en Español
Creo que es por los ids, no debes de hacer el append de los ids.

Eduardo Ihidoype

unread,
Jun 23, 2024, 9:06:23 AM (10 days ago) Jun 23
to Comunidad de Visual Foxpro en Español
Muchas gracias a ambos por las respuestas.
Es muy probable que lo que respondió Francisco haya sido la razón en ese caso, igual terminé no incluyendo esa rutina.
Por otra parte sigo teniendo problemas con el odb.Update, por ejemplo en esta rutina. Estoy usando el VFP10.1 con FoxyDB 3.01, ODBC 8.4.

GO TOP
DO WHILE !EOF()
orden = 'select id, nmro, ' + campo + ' from codigos where nmro = ' + ALLTRIM(STR(datosacargar.tema)) + ' and ' + campo + ' = 0'
registroencontrado = oDb.Query(orden, 'codigo', 'codigos')
IF registroencontrado = .T.
oDb.CursorEdit('codigo')
valornuevo = 'datosacargar.' + campo
REPLACE &campo WITH datosacargar.b FOR nmro = datosacargar.tema
IF oDb.CursorChanges('codigo')
IF MESSAGEBOX("Desea Guardar los Cambios",4+16,"Hay Cambios") = 6   && SI
IF oDb.Update('codigo')
IF oDb.Commit()
MESSAGEBOX('Registro guardado')
ELSE
            oDb.RollBack()
MESSAGEBOX('Falló Commit')
ENDIF
ELSE
MESSAGEBOX(odb.error_Code)  && ACA SALTA ERROR -1
MESSAGEBOX('Falló Update')
oDb.Undo()
ENDIF
ENDIF
ENDIF
ENDIF
SELECT datosacargar
SKIP
ENDDO

Desde ya muchas gracias

Antonio Meza

unread,
Jun 24, 2024, 11:47:13 AM (9 days ago) Jun 24
to Comunidad de Visual Foxpro en Español
Hola, en mi caso uso el driver Mysql odbc 5.1, sin problemas, no uso VFPA, estas usando 32 o 64bit ?

Este es el que uso para VFP 9 Sp 2
mysql-connector-odbc-5.1.13-win32

saludos
Reply all
Reply to author
Forward
0 new messages