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 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

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.