Rutina para tomar la hora del servidor
Y espero me puedan ayudar.. Encontré en internet esta rutina para tomar la hora del servidor.. Global PServerName As String, mifecha1 As Date, mihora1 As Date
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
Public 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
Dim msg As Boolean
Dim i As Integer
PServerName = "AAlfaro"
'Procedimientos: controlar que los usuarios no les cambien la fecha en cada PC //Por: Angela Alfaro //Fecha: Junio 2003
For i = 0 To 10000
abServer = "\\" & PServerName
lResult = NetRemoteTOD(abServer(0), pudtTime)
If lResult = NERR_SUCESS Then
Exit For
End If
mifecha1 = 0
mihora1 = 0
Next i
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)
mifecha1 = DateSerial(.Year, .Month, .Day)
dServDate = dServDate + TimeSerial(.Hours, .Mins - .Timezone, .Secs)
mihora1 = TimeSerial(.Hours, .Mins - .Timezone, .Secs)
fndServerTime = dServDate
'Date = DateSerial(.Year, .Month, .Day) 'dServDate
'Time = TimeSerial(.Hours, .Mins - .Timezone, .Secs)
End With
End If
End Function
Pero cuando la ejecuto en un servidor con terminal server y con access 2000 runtime, esta se toma todos los recursos de la maquina y debido al acceso que hace no deja entrar a nadie. ¿Qué debo hacer? Por favor ayuda! Si alguien tiene por ahí otra rutina menos pesada
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
Public 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
Dim msg As Boolean
Dim i As Integer
PServerName = "AAlfaro"
'Procedimientos: controlar que los usuarios no les cambien la fecha en cada PC //Por: Angela Alfaro //Fecha: Junio 2003
For i = 0 To 10000
abServer = "\\" & PServerName
lResult = NetRemoteTOD(abServer(0), pudtTime)
If lResult = NERR_SUCESS Then
Exit For
End If
mifecha1 = 0
mihora1 = 0
Next i
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)
mifecha1 = DateSerial(.Year, .Month, .Day)
dServDate = dServDate + TimeSerial(.Hours, .Mins - .Timezone, .Secs)
mihora1 = TimeSerial(.Hours, .Mins - .Timezone, .Secs)
fndServerTime = dServDate
'Date = DateSerial(.Year, .Month, .Day) 'dServDate
'Time = TimeSerial(.Hours, .Mins - .Timezone, .Secs)
End With
End If
End Function
Pero cuando la ejecuto en un servidor con terminal server y con access 2000 runtime, esta se toma todos los recursos de la maquina y debido al acceso que hace no deja entrar a nadie. ¿Qué debo hacer? Por favor ayuda! Si alguien tiene por ahí otra rutina menos pesada
1 respuesta
Respuesta de asturcon3
1