Cómo guardar el anterior valor de un campo para luego tratarlo en un disparador?


([N4] Jorge) #1

Necesitamos almacenar el valor de un campo antes de que se produzca una modificación del mismo para luego ser tratado en un disparador. Hemos revisado las funciones de campo y no tenemos ninguna que nos devuelva el anterior valor.

 

Lo único que se nos ocurre es almacenarlo en una variable global cuando abrimos el formulario de edición. ¿Se os ocurre alguna otra solución?


([N1] Albert Aixendri) #2

Hola Jorge,

 

En el proceso anterior a una modificación te guardas el campo en una variable local de la tabla y luego en el proceso posterior de modificación puedes acceder a dicha variable para recuperar el valor que has guardado en el proceso anterior.

Espero que haya quedado claro.

Saludos,

Albert


([N1] Pepeto) #3

Otra opcion es, al abrir el formulario:

Guardar copia de ficha en memoria (nos guarda la ficha completa con todos los campos)

y antes de guardar los cambios , puedes realizar las comprobaciones que necesites con:

Procesar ficha en memoria (aqui seguiras teniendo los valores iniciales sin modificar)

 

Este truco deberia funcionar , pero solo en 1 plano, ya que la ficha se guarda en Local

un saludo

Jose Luis

 


([N1] Rafael) #4

Hola Albert,

Si tienes un formulario, por ejemplo, con un campo NAME y modificas el valor al aceptar y se ejecutarse el evento anterior a una modificación, el valor del campo NAME ya llega modificado, así que la única forma que conozco es guardar los valores anteriores en un evento disparado con conexión de evento INICIADO.

Saludos

Miguel


([N4] Jorge) #5

Por un lado comentar que la solución que plantea @albert creemos que es errónea como también apunta @rzaragoza.

La solución de @Pepeto es correcta, pero no nos gusta que tenga que estar controlada desde el interface. Todo lo que pueda estar en cajas de datos, mejor que mejor.

 

 


([N1] Pepeto) #6

No se si te funcionara,

pero prueba a hacer lo mismo en los Eventos de tabla:

- En el evento PREVIO a la modificacion, Copiar la ficha en memoria,

- En el evento POSTERIOR a la modificacion , Procesar la ficha en memoria

aunque no estoy muy seguro de que funcione

un saludo

Jose Luis

 


([N1] mariorafaelvargas) #7

En mi caso... esto es tipico para una modificacion de ficha, particularmente, un campo codigo propio (COD_TRABAJADOR="0025").   cambiar por otro 0066

En un formulario de modificacion, al momento de inicializar guardo el contenido en una variable local... y... luego... antes de grabar verifico si ya existe (no graba)... y si no existe... si lo graba.


([N1] Albert Aixendri) #8

@Jorge

Entendí mal el problema. Mi solución solamente sería válida, por ejemplo, para cuando se quisiera hacer una auditoria donde hay que guardar el valor anterior a la modificación y el posterior.

Para este problema: desde el formulario puedes crear un evento para consultar la ficha que hay en el servidor sin que tenga en cuenta la cache del cliente:

CargarLista, TABLA, ÍndiceID, #ID

  RecorrerListaLecturaEscritura

    SeleccionarPorPosicion 1

    LeerFichaSeleccionada

      Rem: Aquí tienes acceso a la ficha tal como está en el servidor

La clave está en el RecorrerListaLecturaEscritura