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.
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.
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
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar:
Problema con (dsFIELD) en MemDataSet
Saludos
Israel
Israel
- ignacio
- Site Admin
- Mensajes: 9259
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Problema con (dsFIELD) en MemDataSet
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
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
-
- Mensajes: 155
- Registrado: Mié Nov 03, 2004 12:42 pm
- Ubicación: Cancún, México
- Contactar: