Tomar fecha del servidor de un sistema en red

Maribel
31 de Julio del 2003
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

Alex
31 de Julio del 2003
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 [email protected], [email protected]



declare RtlMoveMemory IN WIN32API as ;

CopyMemory [email protected], INTEGER, INTEGER



declare integer SetSystemTime in ;

kernel32 [email protected]

* 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

erick josue
31 de Julio del 2003
Sencillo, le haces una Aplicacion al Servidor, con una Base de Datos independiente, que cada 15 o 10 min. se Actualice, y que todas las Tablas Accesen a este para tomar la hora, la Fecha la Configuracion Regional Etc.