Día y hora

¿Alguien podría decirme como puedo hacer para obtener la fecha y hora del servidor desde una terminal?
Sucede que tengo usuarios que suelen cambiar la hora del sistema y los asientos quedan en el servidor con la fecha y hora de la terminal del usuario... Un grave problema.-
Gracias Colegas
Fernando Alvarez
La Pampa - Argentina

1 Respuesta

Respuesta
1
Estuve investigando un poco y no encontré una función nativa de VFP que te permita hacer lo que deseas, sin embargo, puedes agregar la clausula "SET" para cambiar la fecha/hora de la terminal a la hora establecida en el servidor. La sintaxis sería:
NET TIME \\Servidor /SET
Intenta con el comando:
NET TIME \\Servidor
Bueno, eso digo yo...
Si, conozco el comando... pero no me sirve. Debe ser un comando o función de VFP.
Para el comando NET TIME necesito saber el nombre del servidor y ademas no es dinámico.
Fernando
Ok gracias.
Aunque el comando NET no se puede usar en todos los sistemas operativos y ademas el usuario puede cambiar intencionalmente la fecha y hora de su terminal... por lo cual estamos en lo mismo.
Mira lo que me contestó otro colega:
"Hola amigo, mira a mi me enviaron un código para obtener la fecha del servidor con un componente COM espero que te sirva
Visual FoxPro permite crear servidores de Automatización (componenente COM) con la finalidad de empaquetar el código para realizar procesos comunes a muchas aplicaciones.
En la Sección de artículos de la Web de Davphantom (www.davphantom.cjb.net/) se encuentran dos documentos valiosos que permiten asimilar de forma sencilla la teoría y la manipulación de un Componente COM.
Para crear un servidor de Automatización se necesita crear un proyecto que incluya clases definidas como OLEPUBLIC, las cuales se pueden definir en un programa(.prg) o en bibliotecas de clases.
Por ejemplo, la definición de la clase siguiente en un archivo de programa que llamaremos MAIN.PRG crea una clase public OLE personalizada que retorna la fecha del sistema.
Define class SERVERLIB as custom olepublic
name ="SERVERLIBUNO"
function fecha_sys
fecha_sys=date()
returm fecha_sys
enddefine
EL programa MAIN.PRG se vincula a un proyecto que denominaremos SERVICIO.PJX
Cuando estemos compilando el proyecto en el cuadro de dialogo opciones, elijimos (*) Ejecutable WIn32 o Servidor COM (EXE)
Una vez creado el proyecto con clases OLE publicas, se crean tres archivos :
1.- El archivo .dll o .exe
2.- Un archivo de bibliotecas de tipos (.tbl)
3.- Un archivo de registro (.vbr)
Para poner en funcionamiento el componente realizamos los siguientes pasos:
release all
close all
run SERVICIO.exe /regserver && Registrar el componente
oCom = createobject("SERVICIO.SERVERLIB") && Crea el COM
?oCom.feh_sys() && Ejecuta la funcion
run SERVICIO.exe /unregserver && Descarga el COM de memoria
release all
close all
El proceso anterior nos devuelve la fecha del cliente desde donde se ejecuta el componente.
Recuerdan ustedes el problema que existía para obtener la fecha del servidor cuando trabajamos con la base de Datos Nativas de Visual FoxPro utilizando clientes Windows 98.
En lo personal recurrí a toda una serie de artificios entre los que figuran :
1.- Permitir que el usuario digite la fecha.
2.- Crear una tabla de configuración con un campo fecha, la cual era accesada por todas la aplicaciones. La actualización de esta tabla era responsabilidad del administrador y la debía realizar todos las mañanas.
3.- La misma tabla del numeral anterior pero esta vez la actualización se realizaba por medio de un ejecutable que corría en el servidor, lo que implicaba apagar y perder todas las mañanas el servidor.
4.- La más original y más utilizada que es sincronizando el cliente con el servidor por medio del comando NET TIME. Este proceso se realiza al inicio de la aplicación pero resulta que hay usuarios que no apagan los PC y es muy dispendioso estar realizando el NET TIME constantemente.
El uso de la Automatización (Componentes COM) nos brinda otra alternativa para solucionar este problema de una manera más paractica, para esto utilizaremos el COM desarrollado anteriormente (SERVICIO.EXE).
Pero antes se deben realizar los siguientes pasos:
1.- Asignar direcciones estática IP a todos los equipos incluyendo el servidor.
2.- Copiar el archivo ejecutable del servidor de automatización (.EXE) en el servidor (en nuestro caso SERVICIO.EXE) y ejecutarlo en el servidor para registrarlo en el registro de Windows (Windows 2000 o Windows NT).
run SERVICIO.exe /regserver
oCom = createobject("SERVICIO.SERVERLIB") && O lo ejecutamos desde el explorador
3.- En el equipo Servidor, ejecute RACMGR32.EXE, el Administrador de para conexiones :
* Selecciones la clase en la lista (SERVICIO.SERVERLIB).
* En la pestaña "Acceso de Cliente", elija "Permitir creaciones remotas mediante clave".
------------------- oOo -------------------
De todos modos, gracias por tu tiempo.
Fernando Alvarez
La Pampa - Argentina

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas