'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



    Source: geocities.com/es/ensolva/Descargas/Documentos

               ( geocities.com/es/ensolva/Descargas)                   ( geocities.com/es/ensolva)                   ( geocities.com/es)