In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

Problema con (dsFIELD) en MemDataSet

Foro público de Xailer en español
Responder
Israel Solis
Mensajes: 155
Registrado: Mié Nov 03, 2004 12:42 pm
Ubicación: Cancún, México
Contactar:

Problema con (dsFIELD) en MemDataSet

Mensaje por Israel Solis »

Amigos:
Utilizo DataControls asociados a un MemDataSet para la edición de registros y al hacer:...
WITH OBJECT oMemDataSet
:Edit()
:MiCampo := "Nuevo valor"
OutDebug(:MiCampo)
OutDebug(:MiCampo(dsFIELD))
:Update()
END WITH
Ambos mensajes en el debug me muetran el mismo texto: "Nuevo valor", es normal? es decir, si aún no hago el :Update() la sentencia :MiCampo(dsFIELD) deberia mostrar el valor Original ANTES del cambio a "Nuevo valor"?
Solo con oMemDataSet:aRecord[nIndex] obtengo el valor original
Alguna idea del porque el problema con dsFIELD ?
Gracias
Saludos
Israel S.
Saludos :D

Israel
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9252
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Problema con (dsFIELD) en MemDataSet

Mensaje por ignacio »

Hola Israel,
Me temo que en el caso de los TMemDataset la actualización es instantánea en operaciones de edición (para altas deberí­a funcionar). Para recoger el valor que tení­a el campo antes de actualizarlo se podrí­a hacer de esta forma:
OldValue := oMemDs:oRecords:aRecord[ nField ]
Pero aRecord figura como PROTECTED por lo que habrí­a que hacer un método en TMemRecords.prg que retornara el valor. Algo así­:
METHOD FieldInit( nField ) INLINE ::aRecord[ nField ]
Y lo llamarias:
OldValue := oMemDs:oRecords:FieldInit( nField )
Saludos
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Israel Solis
Mensajes: 155
Registrado: Mié Nov 03, 2004 12:42 pm
Ubicación: Cancún, México
Contactar:

Problema con (dsFIELD) en MemDataSet

Mensaje por Israel Solis »


Anotado
Gracias Ignacio !!
Saludos :D

Israel
Responder