Página 1 de 1

Problema con (dsFIELD) en MemDataSet

Publicado: Mié Jun 19, 2013 4:59 am
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.

Problema con (dsFIELD) en MemDataSet

Publicado: Mié Jun 19, 2013 4:59 pm
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

Problema con (dsFIELD) en MemDataSet

Publicado: Mié Jun 19, 2013 5:54 pm
por Israel Solis

Anotado
Gracias Ignacio !!