FoxPro/Visual FoxPro - Detectar modificación en un campo

   
Vista:

Detectar modificación en un campo

Publicado por Silvia (4 intervenciones) el 20/01/2011 09:44:45
Hola a todos:
Desde hace tiempo tengo un problema que no soy capaz de detectar:
De vez en cuando existe algún campo en un determinado fichero que pasa de tener un dato a blanco. Este campo se puede actualizar en varios programas diferentes. Quisiera saber si existe alguna rutina que me diga que programa ó usuario cambió ese campo ó como podría detectar cuando que el campo es modificado.

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Detectar modificación en un campo

Publicado por Javier (265 intervenciones) el 20/01/2011 16:44:02
Hola Silvia, me parece que para esos casos deberías tener una tabla en donde registres los cambios. En ella grabarías el nombre de la tabla, el campo, el valor anterior , el valor nuevo, y el legajo ,usuario o dni de la persona que hizo el cambio, fecha y hora de la modificacón, etc.

Esto va a requerir trabajo extra para que crees algo como una función en los programas que realicen esos cambios a fin de que mediante esta función grabes en esa nueva tabla las modificaciones.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar modificación en un campo

Publicado por Juan Manuel Cruz (508 intervenciones) el 21/01/2011 10:58:46
Usa un trigger (desencadenante) que se dispare cuando ocurra una alteración del registro o campo en particular.

Esto si lo tienes todo debidamente registrado en una base de datos, claro.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Detectar modificación en un campo

Publicado por Martín (16 intervenciones) el 21/01/2011 16:47:27
Efectivamente, la manera más útil de hacerlo es un trigger. Tendrías que tener en tu tabla campos como usuario, programa y fecha / hora de última modificación. Entonces, vas a la tabla y le ponés en la regla de validación del registro, un procedure almacenado en tu base de datos.

Ejemplo:

En el programa que inicia el sistema, creás 2 variables públicas, para que sean visibles siempre.

PUBLIC gcUsuario, gcPrograma
gcUsuario = "" && el login del sistema almacena en esta variable el usuario.
gcPrograma = "" && cada vez que entren a un form o a un programa, en esta variable almacenamos ese dato.

Regla de validación: Editar()

y como procedimiento almacenado en la base de datos.

PROCEDURE Editar()

REPLACE usuario WITH gcUsuario, ;
programa WITH gcPrograma, ;
fechaedit WITH DATETIME()

Y listo.

Slds.

Martín.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar