Saber si un registro fue cambiado o no?

1,362 views
Skip to first unread message

Samuel SM-H

unread,
Jan 26, 2012, 5:05:01 PM1/26/12
to publice...@googlegroups.com
Hola foro;
mi consulta es la siguiente, en una grilla tengo enlazado un cursor; dicho cursor actualmente no esta manejando BUFERING;
mi consulta es; como puedo saber si un registro de ese cursor fue modificado???
necesito manejar buferring o sin eso puedo saberlo??
Ya que al salir del formulario deseo que me envie un mensaje :  "existen registros modificados, está seguro de salir??"; asi el usuario puede darse cuenta que existe un cambio, y si gusta lo graba o si gusta lo cierra.

Saludos.
Lima - Perú

Lewis López

unread,
Jan 26, 2012, 5:44:14 PM1/26/12
to publice...@googlegroups.com
Hola, Primero con los cursores no puedes manejar buffering.

Para comprobar debes crear do cursosres con la misma estructura y al salir los comparas y sabes que campo fue cambiado
y lo guardas o no, o puedes usar tablas y no cursores con buffering.

Saludos.

SOLUCIONES PC & REDES
Desarrollo de Software a la medida
Diseño de planos Arquitectónicos
Venta, reparación y mantenimiento de Computadores.
Lewis Oswaldo López Gómez .
Teg. En obras Civiles.
Analista y Programador de sistemas.
Cel: 311 665 0342
Correo:
Córdoba-Colombia




Date: Thu, 26 Jan 2012 14:05:01 -0800
From: ssan_m...@hotmail.com
To: publice...@googlegroups.com
Subject: [vfp] Saber si un registro fue cambiado o no?

Juan de Dios Corrales Leal

unread,
Jan 26, 2012, 6:25:26 PM1/26/12
to Comunidad de Visual Foxpro en Español
con la pena, pero lamento desmentirte Lewis.....

Create Cursor NombreCursor ( campo1 c(50), campo2 i)
CursorSetProp("Buffering",5)
Append Blank
Replace Campo1 with "un valor"
Replace Campo2 with 1
=TableRevert(.T.)
Browse Normal

Y despues de esto revisa el cursor y me cuentas....

Y todo lo demas es valido Curval, Oldval, etc., etc...

Saludos.

On Jan 26, 3:44 pm, Lewis López <lws_1...@hotmail.com> wrote:
> Hola, Primero con los cursores no puedes manejar buffering.
> Para comprobar debes crear do cursosres con la misma estructura y al salir los comparas y sabes que campo fue cambiadoy lo guardas o no, o puedes usar tablas y no cursores con buffering.
> Saludos.
>
> SOLUCIONES PC & REDESDesarrollo de Software a la medidaDiseño de planos ArquitectónicosVenta, reparación y mantenimiento de Computadores.Lewis Oswaldo López Gómez .Teg. En obras Civiles.Analista y Programador de sistemas.Cel: 311 665 0342Correo:lws_1...@hotmail.com - l1w2s3_1...@yahoo.es Córdoba-Colombia
>
> Date: Thu, 26 Jan 2012 14:05:01 -0800
> From: ssan_migu...@hotmail.com

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Jan 26, 2012, 6:38:12 PM1/26/12
to Comunidad de Visual Foxpro en Español
Estas en lo correcto Juan de Dios Corrales Leal es la manera como se
maneja los cursores bueno si es que se quiere usar el Buffering
el comando GETFLDSTATE("micampo") te dice si un campo fue modificado
o iso una inserto un registro.

nEstado = GETFLDSTATE("micampo")

nEstado = 4 se inserto en el campo
nEstado = 2 se modifico el campo

Pd.: Descargate mi grilla que tiene multiples funciones como filtrar,
multiseleccion, busqueda, etc del siguiente link
http://www.developervfp.blogspot.com/p/gridlibre-v35.html viene con
codigo fuente, ojo no hacer mal uso por favor.

Saludos;


Ing. Russvell Jesus Soto Gamarra
San Juan del Rio - Queretaro - Mexico
rycjesusrj @ hotmail.com

Lewis López

unread,
Jan 26, 2012, 6:45:02 PM1/26/12
to publice...@googlegroups.com
Hola, Juan de Dios Corrales Leal no tienes porque disculparte 
Todos los días se aprende y nunca dejamos de hacerlo, mil gracias por sacarme del error.

Pero seguiré haciendo haciendo las pruebas, ya que una vez traté de hacerlo con cursores traídos desde MySql con un select y no resultó.


Saludos.



SOLUCIONES PC & REDES
Desarrollo de Software a la medida
Diseño de planos Arquitectónicos
Venta, reparación y mantenimiento de Computadores.
Lewis Oswaldo López Gómez .
Teg. En obras Civiles.
Analista y Programador de sistemas.
Cel: 311 665 0342
Correo:
Córdoba-Colombia



> Date: Thu, 26 Jan 2012 15:25:26 -0800
> Subject: [vfp] Re: Saber si un registro fue cambiado o no?
> From: jdc...@gmail.com
> To: publice...@googlegroups.com

Lewis López

unread,
Jan 26, 2012, 6:54:47 PM1/26/12
to publice...@googlegroups.com
Otras cosa de que le sirve actualizar un cursor con Buffering si es temporal y al volverlo a crear o cerrar chao info.

 A menos que use vistas locales o remotas(si usa una data no nativa.).

Usa más bien las transacciones con buffering usando tablas o vistas locales.


Saludos.



SOLUCIONES PC & REDES
Desarrollo de Software a la medida
Diseño de planos Arquitectónicos
Venta, reparación y mantenimiento de Computadores.
Lewis Oswaldo López Gómez .
Teg. En obras Civiles.
Analista y Programador de sistemas.
Cel: 311 665 0342
Correo:
Córdoba-Colombia



> Date: Thu, 26 Jan 2012 15:25:26 -0800
> Subject: [vfp] Re: Saber si un registro fue cambiado o no?
> From: jdc...@gmail.com
> To: publice...@googlegroups.com

MALKASOFT ADPI: http://www.developervfp.blogspot.com/

unread,
Jan 26, 2012, 8:35:17 PM1/26/12
to Comunidad de Visual Foxpro en Español
Hola Lewis López si se puede hacer a los temporales traido de mysql
o de cualquier motor.... para poder modificar o cerrar ese cursor solo
tienes que usar TABLEUPDATE Y TABLEREVERT con eso solucionas algun
problemas que tengas con los temporales que sea de cualquier motor de
base de datos.

Lewis López

unread,
Jan 26, 2012, 9:11:03 PM1/26/12
to publice...@googlegroups.com

Gracias russvel, la probaré y no te preocupes solo lo aré para mirar el ejemplo
pero no la usaré para distribuirla.

Saludos.


SOLUCIONES PC & REDES
Desarrollo de Software a la medida
Diseño de planos Arquitectónicos
Venta, reparación y mantenimiento de Computadores.
Lewis Oswaldo López Gómez .
Teg. En obras Civiles.
Analista y Programador de sistemas.
Cel: 311 665 0342
Correo:
Córdoba-Colombia



> Date: Thu, 26 Jan 2012 17:35:17 -0800

> Subject: [vfp] Re: Saber si un registro fue cambiado o no?

Samuel SM-H

unread,
Jan 27, 2012, 2:45:33 PM1/27/12
to publice...@googlegroups.com
Gracias por el ejemplo,
con esto tengo que recorrer campo por campo de cada registro... pero si quisiera evitar eso y solo recorrer una vez por registro y saber si fue modificado ese registro o no; algo asi como cuando bloqueas una fila con RLOCK y podemos sabersi esta bloqueado o no con ISRLOCKED().

habra este comando??

Saludos.

Alci

unread,
Jan 28, 2012, 10:14:46 AM1/28/12
to Comunidad de Visual Foxpro en Español
Puedes utilizar este codigo en un metodo en tu form, para saber si se
cambio algo el la tabla.

*-- Supone la tabla o la vista para el área de trabajo actual
*-- Devuelve .T. si ha cambiado algún dato

Parameters lcTabla
Local llDataChanged,lcAlias,lnRecno
llDataChanged = .f.
lcAlias = Alias()
*** Si recibe un parametro significa que queremos saber el estado de
una tabla especifica
if Parameters()>0
lTabla=lcTabla
select (lTabla)
* lnRecno=recno()
IF CURSORGETPROP("Buffering")=5
SCAN
IF ISNULL(GETFLDSTATE(-1))
 llDataChanged = .F.
ELSE
 llDataChanged = ("2" $ GETFLDSTATE(-1) OR "4" $ GETFLDSTATE(-1))
 if llDataChanged
 EXIT
 endif

ENDIF
ENDSCAN
   go bottom
ELSE
IF ISNULL(GETFLDSTATE(-1))
 llDataChanged = .F.
ELSE
 llDataChanged = ("2" $ GETFLDSTATE(-1) OR "4" $ GETFLDSTATE(-1))
ENDIF
ENDIF

    select (lcAlias)
return llDataChanged
endif

Saludos.

elcritico

unread,
Jun 27, 2012, 4:19:29 PM6/27/12
to publice...@googlegroups.com
USE Customer
=CURSORSETPROP("Buffering", 5, "customer") 
go to 5
REPLACE cust_id WITH "***"
go top
lnrec = GETNEXTMODIFIED(0,"customer")
case
case lnrec >0
wait " Se modifico el registro " + str(lnrec)
case lnrec <0
wait " Se agregaron registros"
case lnrec = 0
wait "Sin modificaciones"
endcase

Samuel San Miguel Hernández

unread,
Jun 27, 2012, 4:37:52 PM6/27/12
to publice...@googlegroups.com
Esta publicaciíon es del 26 DE ENERO,.. YA ESTA SOLUCIONADO!!
Reply all
Reply to author
Forward
0 new messages