Tomar fecha del servidor de un sistema en red
Hola
Estoy desarrollando un base de Datos, en red, pero necesito capturar la fecha de la maquina donde esta la B.D no la de la estacion de trabajo.
Gracias por atenderme
bye, bye.............. gracias
Estoy desarrollando un base de Datos, en red, pero necesito capturar la fecha de la maquina donde esta la B.D no la de la estacion de trabajo.
Gracias por atenderme
bye, bye.............. gracias
Quizas esta funcion te sirva.
* tcserver es el nombre del servidor con el
* que sincronizamos (i.e. \PC1)
* lparameter tcserver
*/ declaramos las funciones a utilizar
declare integer NetRemoteTOD in ;
netapi32 STRING@, INTEGER@
declare RtlMoveMemory IN WIN32API as ;
CopyMemory STRING@, INTEGER, INTEGER
declare integer SetSystemTime in ;
kernel32 STRING@
* conversión a UNICODE
lcserver = strconv(strconv(tcserver,1),5)+chr(0)
lnptr = 0
lctimeofday = replicate(chr(0),48)
lcsystemtime = space(0)
*/ tomamos la hora
nres = NetRemoteTOD(@lcserver,@lnptr)
local lnyear, lnmonth, lndayofweek, lnday,;
lnhour, lnminute, lnsecond,;
lnmillsecond
if nres = 0 then
=CopyMemory(@lctimeofday,;
@lnptr, 48)
lnyear = DWordtoNum(substr(;
lctimeofday,41,4))
lnmonth = DWordtoNum(substr(;
lctimeofday,37,4))
lndayofweek = DWordtoNum(substr(;
lctimeofday,45,4))
lnday = DWordtoNum(substr(;
lctimeofday,33,4))
lnhour = DWordtoNum(substr(;
lctimeofday,9,4))
lnminute = DWordtoNum(substr(;
lctimeofday,13,4))
lnsecond = DWordtoNum(substr(;
lctimeofday,17,4))
lcsystemtime =
NumtoWord(lnyear)+;
NumtoWord(lnmonth)+;
NumtoWord(lndayofweek)+;
NumtoWord(lnday) + ;
NumtoWord(lnhour)+;
NumtoWord(lnminute)+;
NumtoWord(lnsecond)+;
NumtoWord(0)
*/ colocamos la hora en el equipo local
nres = SetSystemTime(@lcsystemtime)
return nres # 0
else
? "No está trabajando" + space(5) +;
transform(nres)
endif
return
***************************
function DwordToNum
lparameter tcDWORD
local ln0,ln1,ln2,ln3
ln0=asc(subs(tcDWORD,1,1))
ln1=asc(subs(tcDWORD,2,1)) * (256)
ln2=asc(subs(tcDWORD,3,1)) * (256^2)
ln3=asc(subs(tcDWORD,4,1)) * (256^3)
return ln3 + ln2 + ln1 + ln0
**************************
function NumtoWord
lparameter tnNum
lcresult = chr(0)+chr(0)
if tnNum < (2^15 - 1) then
lcresult = chr(mod(;
tnNum,256))+chr(int(tnNum/256))
else
* no es un número válido
endif
return lcresult
Saludos
* tcserver es el nombre del servidor con el
* que sincronizamos (i.e. \PC1)
* lparameter tcserver
*/ declaramos las funciones a utilizar
declare integer NetRemoteTOD in ;
netapi32 STRING@, INTEGER@
declare RtlMoveMemory IN WIN32API as ;
CopyMemory STRING@, INTEGER, INTEGER
declare integer SetSystemTime in ;
kernel32 STRING@
* conversión a UNICODE
lcserver = strconv(strconv(tcserver,1),5)+chr(0)
lnptr = 0
lctimeofday = replicate(chr(0),48)
lcsystemtime = space(0)
*/ tomamos la hora
nres = NetRemoteTOD(@lcserver,@lnptr)
local lnyear, lnmonth, lndayofweek, lnday,;
lnhour, lnminute, lnsecond,;
lnmillsecond
if nres = 0 then
=CopyMemory(@lctimeofday,;
@lnptr, 48)
lnyear = DWordtoNum(substr(;
lctimeofday,41,4))
lnmonth = DWordtoNum(substr(;
lctimeofday,37,4))
lndayofweek = DWordtoNum(substr(;
lctimeofday,45,4))
lnday = DWordtoNum(substr(;
lctimeofday,33,4))
lnhour = DWordtoNum(substr(;
lctimeofday,9,4))
lnminute = DWordtoNum(substr(;
lctimeofday,13,4))
lnsecond = DWordtoNum(substr(;
lctimeofday,17,4))
lcsystemtime =
NumtoWord(lnyear)+;
NumtoWord(lnmonth)+;
NumtoWord(lndayofweek)+;
NumtoWord(lnday) + ;
NumtoWord(lnhour)+;
NumtoWord(lnminute)+;
NumtoWord(lnsecond)+;
NumtoWord(0)
*/ colocamos la hora en el equipo local
nres = SetSystemTime(@lcsystemtime)
return nres # 0
else
? "No está trabajando" + space(5) +;
transform(nres)
endif
return
***************************
function DwordToNum
lparameter tcDWORD
local ln0,ln1,ln2,ln3
ln0=asc(subs(tcDWORD,1,1))
ln1=asc(subs(tcDWORD,2,1)) * (256)
ln2=asc(subs(tcDWORD,3,1)) * (256^2)
ln3=asc(subs(tcDWORD,4,1)) * (256^3)
return ln3 + ln2 + ln1 + ln0
**************************
function NumtoWord
lparameter tnNum
lcresult = chr(0)+chr(0)
if tnNum < (2^15 - 1) then
lcresult = chr(mod(;
tnNum,256))+chr(int(tnNum/256))
else
* no es un número válido
endif
return lcresult
Saludos
