FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Otro problema con RECORDSET
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Otro problema con RECORDSET
Posted: Mon Jun 09, 2008 03:15 AM
Amigos:

Continuo con mi aprendizaje sobre ADO y ahora me encuentro con otro problema que les comento aquí para ver si hay alguien que me saque de este atolladero.

con el siguiente sencillo código:

IF lAppend
	oRsPro:AddNew()
ENDIF
oRsPro:Fields("PRO_HRA"):Value := TIME()
oRsPro:Update()


En algunos PRGs funciona muy bien pero en algunos otros me tira un error que no he logrado entender por qué, si alguien tiene alguna idea, será bienvenida.

Application
===========
   Path and name: C:\SapWinA\SapWin.Exe (32 bits)
   Size:   677,888 bytes
   Time from start: 0 hours 0 mins 14 secs 
   Error occurred at: 08/06/2008, 22:11:53
   Error description: Error adodb.recordset/3  DISP_E_MEMBERNOTFOUND: UPDATE
   Args:

Stack Calls
===========
   Called from: win32ole.prg => TOLEAUTO:UPDATE(0)
   Called from: sapwin6a.prg => UPGRADE(1174)


La línea 1174 es precisamente el código

oRsPro:Update()

Saludos al foro
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 158
Joined: Tue Oct 11, 2005 03:10 PM
Otro problema con RECORDSET
Posted: Mon Jun 09, 2008 01:08 PM
Armando :
Tengo poco trabajando con MySql ( me imagino que es lo que tu estas utilizando ), hace unos dias tuve el mismo problema, y creo que es el siguiente :
Si EDITAS un registro, pero NINGUN campo sufre modificaciones, MySql "NOS AVISA", que no hubo cambio alguno, y por lo tanto el mensaje, que tu ves. Entonces para resolver este detalle, hicie lo siguiente :
Catch oErr
If oErr:Description == "DISP_E_MEMBERNOTFOUND"
::Limpia()
Return Self
else
MsgStop("Operacion: "+oErr:operation+" - "+"Descripcion.. CAMBIOS CLTES/PROSPECTOS *: "+oErr:Description+chr(10))
oRs := NIL
Return Nil
endif
End
oRs:Close()


Espero te sea de utilidad.

Saludos
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Otro problema con RECORDSET
Posted: Mon Jun 09, 2008 01:59 PM

Ricardo:

Te agradezco mucho la respuesta, pero estoy desconcertado y te explico porque.

En un PRG de mantenimiento a clientes si edito un cliente pero no modifico campo alguno funciona sin problemas, pero en otro PRG edito el registro y ya sea que modifique o no modifique dato alguno truena con el consabido mensaje.

Sin embargo voy a tratar con la sugerencia que me haces y ya te comentaré.

Nuevamente te agradezco la respuesta, Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Posts: 65
Joined: Fri Oct 21, 2005 08:07 PM
Otro problema con RECORDSET
Posted: Tue Jun 10, 2008 03:23 PM

Hola!

Yo tambien estoy trabajando con ADO y he detectado errores en el UPDATE cuando:
1. Tengo campos llave en la tabla y no estoy grabando nada
2. Tengo campos NOT NULL que no se les esta moviendo información
3. Tengo campos llave relacionados de otra tabla cuyo valor no existe, por ej. si quiero grabar el num. de la compañía y le pongo 2 y no existe en la tabla compañia ese registro manda error
4. Cuando haces consultas solo de algunos datos tampoco hace el update
5. si la longitud de tus variables excede la de los campos tampoco hace el update...
Hasta ahorita es lo que he detectado... igual y si alguien tiene mas tips sería bueno los comparta.

Espero y te sirvan

Laurel

Laurel
Posts: 883
Joined: Tue Oct 11, 2005 11:57 AM
Otro problema con RECORDSET
Posted: Tue Jun 10, 2008 04:11 PM

Ojo con las consultas parciales, por ej. traes solo el nombre y apellido, pero no el codigo del cliente que es una clave o "indice" de la tabla... se te va a caer...

Si tienes consultas compuestas, de mas de 1 tabla, debes decirle al recordset cual es la tabla primaria, en la que vas a grabar.

Revisa el codigo de mi clase ( ADOBASE ) para ver como solucione esos problemas, estan los comentarios en el ejemplo tambien.

Recuerda tambien que ciertas combinaciones de opciones de apertura, tipo y bloqueo del recordset no permiten updates. Ve el codigo de la funcion Info() de la clase para ver que puedes hacer o no.

Eso.

Desde Chile
Adolfo

;-) Ji,ji,ji... buena la cosa... "all you need is code"

http://www.xdata.cl - Desarrollo Inteligente
----------
Asus TUF F15, 32GB Ram, 2 * 1 TB NVME M.2, GTX 1650
Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Otro problema con RECORDSET
Posted: Tue Jun 10, 2008 06:21 PM

Adolfo:

Gracias por los consejos, los voy a probar, pienso que el problema que tengo esta en el JOIN.

Antes de tu respuesta hice algunas pruebas y te comento lo siguiente:

1.- Al crear el JOIN estoy tomando todos los campos de la tabla primaria
2.- Si se trata de un nuevo registro el oRsPro:Update() funciona de 100
3.- Pero si se trata de una modificación, sin importar si se modificaron campos de la tabla o no, el oRsPro:Update() TRUENA !

Seguiremos investigando y comentando

Saludos

SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero

Continue the discussion