'Responde Bhuo a una pregunta
'de como sincronizar las fechas entre ordenadores.
'La cuestion era que alguien tiene una aplicacion de
'Access, separada formularios y datos.
'Y desea controlar que los usuarios no les cambien
'la fecha en cada PC y si lo hacen, que de inmediato
'el programa recoja la fecha real del Servidor
Option Compare Database
Option Explicit
Public Declare Function NetRemoteTOD Lib "NETAPI32.DLL" _
(yServer As Any, _
pBuffer As Long) As Long
Public Declare Function NetApiBufferFree Lib "NETAPI32.DLL" _
(ByVal lpBuffer As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" _
(hpvDest As Any, _
hpvSource As Any, _
ByVal cbCopy As Long)
Private Type TIME_OF_DAY
Elapsedt As Long
Msecs As Long
Hours As Long
Mins As Long
Secs As Long
Hunds As Long
Timezone As Long
Tinterval As Long
Day As Long
Month As Long
Year As Long
Weekday As Long
End Type
Const NERR_SUCESS = 0
Public Function fndServerTime() As Date
Dim udtTime As TIME_OF_DAY
Dim pudtTime As Long
Dim lResult As Long
Dim abServer() As Byte
Dim dServDate As Date
Dim PserveRName As String
Dim TPTR
PserveRName = "PC_SERVER"
'Este nombre le buscas en el entorno de RED para saber
'como se llama, bajo la red de Windows, el servidor de datos
abServer = "\\" & PserveRName
lResult = NetRemoteTOD(abServer(0), pudtTime)
If lResult = NERR_SUCESS Then
'Ahora hay que copiar esa zona de memoria a nuestro udt.
CopyMemory udtTime, ByVal pudtTime, Len(udtTime)
NetApiBufferFree (TPTR)
'Por ultimo montamos la fecha
With udtTime
dServDate = DateSerial(.Year, .Month, .Day)
dServDate = dServDate + TimeSerial(.Hours, .Mins - .Timezone, .Secs)
fndServerTime = dServDate
Date = dServDate
End With
Else
'Error. Poner tratamiento de errores (Ej: no existe el servidor)
End If
End Function
               (
geocities.com/es/ensolva/Descargas)                   (
geocities.com/es/ensolva)                   (
geocities.com/es)