Hola JoRoGar, por el código que mostras el problema puede ser que no te estas
moviendo al registro que sufrió la modificación, GetNextModified te devuelve el
número del registro que fue modificado/eliminado/insertado pero no mueve el
puntero al mismo por lo que lo tenes que hacer vos.
Debajo te paso un ejemplo que utiliza GetNextModified con una lógica que
detecta todos los cambios.
Saludos.
Anibal Ceberio
Local lnNroRegistro As Integer
lnNroRegistro = 0
Clear
Create Cursor Test ( Campo1 C(1) )
Insert Into Test ( Campo1 ) Values ( "A" )
Insert Into Test ( Campo1 ) Values ( "B" )
Insert Into Test ( Campo1 ) Values ( "C" )
CursorSetProp( "Buffering", 5, "Test" )
Delete From Test Where Campo1 == "A"
Update Test Set Campo1 = "b" Where Campo1 == "B"
Insert Into Test ( Campo1 ) Values ( "D" )
*!* El unico que no cambio fue el registro con Campo1 == "C"
lnNroRegistro = GetNextModified( 0, "Test" )
Do While lnNroRegistro # 0
Go lnNroRegistro
? Campo1
lnNroRegistro = GetNextModified( lnNroRegistro, "Test" )
EndDo
----- Original Message -----
From: Rodolfo
To: GUFA List Member
Sent: Thursday, October 11, 2007 9:46 AM
Subject: [GUFA] Funcion GetNextModified (una vez mas)
Hola colegas vuelvo a enviar el mensaje con la duda que tengo con la
esperanza de que alguien me pueda ayudar.
La pregunta esta vez es por algo relacionado con la funcion GetNextModified
y su comportamiento.
Tengo un formulario en el que permito Insertar o Eliminar registros en un
Cursor creado con Select ...From ... Into Cursor xxx ReadWrite al que le
establezco almacenamiento de tablas en buffer (Buffering=5) y necesito
almacenar en un arreglo (Scatter to<arreglo>) los registros que han sido
agregados o modificados pues en ese cursor pueden existir mas registros que no
hayan sufrido cambios. Me interesa conocer el contenido de los que han
cambiado, y coloco el siguiente codigo en el evento Destroy del form.
Select MiCursor
Go Top
nreco=GetNextModified(0)
If m.nReco<>0
Do While .t.
Scatter to aModi
...... Otras instrucciones
nReco=GetNextModified(m.nReco)
If m.nReco=0
Exit
EndIf
EndDo
EndIf
Muy parecido a lo que esta en la ayuda para esta funcion y todo esta bien y
funciona mientras que no haya ocurrido una ELIMINACION o BORRADO de algun
registro porque entonces GETNEXTMODIFED() no reconoce cambio alguno aunque los
haya habido.
Estoy en un error de concepto o garrafal como quiera llamarse o debo hacer
algo extra para lograr lo que quiero.
Esperando que me hayan entendido y por supuesto que me puedan ayudar.
Les saluda
JoRoGar