¿Qué fecha y hora devuelven fHoy() y fAhora(), la del cliente o la del servidor?

Base de conocimiento de la plataforma de desarrollo Velneo

Moderador: vCoaches

Responder
vBdC
vGuru
vGuru
Mensajes: 2
Registrado: 11 Oct 2005, 14:22

¿Qué fecha y hora devuelven fHoy() y fAhora(), la del client

Mensaje por vBdC » 05 Dic 2003, 01:00

¿Qué fecha y hora devuelven fHoy() y fAhora(), la del cliente o la del servidor?

Categorías: Servidor de aplicaciones, IRunner, Objeto visual

Palabras clave: Asistente de fórmulas, Procesos en primer plano, Procesos en segundo plano, Procesos en tercer plano

Enunciado:
Una aplicación instalada en el servidor hace que por defecto el campo fecha asuma la del día (fHoy()). Pensaba que estaba cogiendo la fecha del servidor y no del cliente, pero hace unos días uno de los clientes cambió la fecha de su PC y el registro del día de ese usuario quedó fijado con la fecha del cliente. ¿Hay alguna forma de forzar a que ese campo fecha sea la del servidor? Lo mismo me ocurre con el campo hora y fAhora().

Desarrollo:
fHoy() y fAhora() devuelven fecha y hora de donde se calculen, es decir, si se calcula en el servidor devuelve la del servidor, si se calcula en el cliente, se dará la del cliente. En objetos que se ejecuten en el servidor, devolverá los datos del servidor: triggers, procesos lanzados en tercer plano, procesos de arranque, etc. En los objetos que se ejecuten en el cliente devolverá los datos del cliente: formularios, procesos en primer plano, etc.

Tenemos dos maneras de que la fecha a guardar sea la del servidor, por un lado sincronizar las máquinas, como es lógico, y por otro en un trigger anterior a un alta o modificación de una ficha modificar la fecha y la hora, de tal manera que coge las del servidor.

También podemos obtener la fecha del servidor para mostrarla en el cliente de la manera siguiente:

Crear una variable global de tipo fecha en memoria ($FECHA$).
Crear un proceso sin origen (FECHA-SERVIDOR) que tenga la siguiente línea:

modificar variable global-> $FECHA$, fHoy()

Crear un proceso sin origen (AUTOEXEC-ONINIT) asociado al menú formulario AUTOEXEC que contenga la siguiente línea:

Ejecutar proceso sin origen->FECHA-SERVIDOR, bOk, Servidor

Este proceso lanzará el proceso FECHA-SERVIDOR en el servidor (es decir, se lanza en tercer plano). Así la variable global $FECHA$ tomará la fecha del servidor. Finalmente, en el campo FECHA de la tabla asignamos como contenido inicial el de la variable global.

Este proceso ha de ser llamado antes de realizar la operación en que necesitemos fecha u hora. Deberíamos utilizar un trigger anterior al alta, por ejemplo, que se encarge de llamar al proceso que obtenga la fecha y hora del servidor.
Última edición por vBdC el 05 Dic 2003, 01:00, editado 1 vez en total.

Responder