Tiempo de la transacción


([N1] gberumen) #1

Que tal, Mi nombre es Gustavo y soy nuevo en el mundo de velneo. Pasa que tengo una duda y espero me puedan ayudar. Para las transacciones que se generan desde vClient es necesario obtener un valor Tiempo para saber en que momento se realizó la transacción y almacenarlo. El detalle está en que es necesario que ese valor sea el tiempo pero del servidor, no de la transacción que, por ejemplo, agrega un nuevo registro en una tabla. He intentado ejecutar el un proceso que obtiene la tiempo y lo retorna. Para eso existe una función que llama ese proceso en 3er plano para obtener la hora del servidor. Esa función es llamada como contenido inicial de un campo tipo Tiempo, en el cual espero obtener la hora del servidor. Sin embargo pasa que al agregar un nuevo registro desde la rejilla, el valor de ese campo siempre es la hora de mi local. ¿Estoy haciendo algo mal? Otra cosa que intenté fue crear un manejador de objeto, el cual llama el proceso que obtiene la fecha del servidor y lo guardo en una variable local del proceso. Posterior a eso intento obtener el valor de esa variable local pero el valor obtenido es vacio. ¿algún consejo? Se los agradecería mucho.


([N1] aztecmexico) #2

Solo se me ocurre que revises que el tipo de dato d ela variable local sea acorde al tipo de dato que guardas, en este caso que sea tipo fecha, de lo contrario por defecto te lo crea alfabético y pasan cosas raras luego.

Saludos.

Martin Ibarra.


([N4] nDesarrollo) #3

Gracias Martín, de hecho es de tipo Tiempo, pero sigo sin obtener correctamente el valor que requiero.

Saludos


([N4] eic) #4

Hola.

En vez de utilizar el contenido inicial del campo, utiliza un trigger de tabla “Anterior al alta”, y llama desde ahí al proceso, y asigna el valor al campo.

Para monitorizarlo, puedes usar una instrucción Mensaje en el trigger. No te aparecerá la ventana con el mensaje (porque se ejecuta en el servidor), pero puedes ver la salida en el log del servidor mediante vAdmin.


([N1] gberumen) #5

Que tal Fran, ya lo probé y aunque llamé el proceso, no se actualizó el valor, además el valor que guarda es vacío, debido a que no encuentro como obtener el valor del proceso que llamé ejecutar en 3er plano. Al revisar el log vi el tiempo del servidor, pero el campo no almacenó valor alguno.

Saludos


([N2] Mgalvezh) #6

una pregunta, si los triggers se lanzan en el servidor, entonces si metes en el trigger anterior al alta un modificar campo con la función currentxxxx te debe de servir, o voy mal ?

Saludos
Miguel.


([N1] gberumen) #7

Tienes toda la razón Miguel, sin embargo se me solicitó que no quedara a nivel de campos, de manera que otros colaboradores pudieran utilizar la función.

Muchas gracias


([N2] Mgalvezh) #8

A ver si esto te sirve, tienes un proceso que lanzaras en 3º plano con una linea ‘set time currentdatetime()’, tienes otro que lanzaras en local este tiene varias lineas, 1.- crear manejador de objeto el proceso anterior, 2.- Disparar el objeto en 3p’, 3.- get variable local de objeto time, y ya lo tienes, ojo el get variable siempre fuera del nivel creado por el disparar objeto.


([N1] gberumen) #9

Gracias a todos. El día de hoy estuve haciendo pruebas con el primer consejo de Miguel, utilizando la función currentDateTime() para obtener la hora del servidor al momento de insertar un registro. Sin embargo, al final se modificó el campo a tipo cadena para almacenar la fecha con el formato requerido, esto debido a que obtenía la hora de mi local (supongo que fue algún problema de formato, que me corrijan si eso es incorrecto) y por lo tanto me almacenaba el valor de mi hora local. De antemano muchas gracias por la pronta respuesta