SISTEMA EM REDE, PROBLEMA COM A HORA
Boa tarde Galera.....
tenho um sistema em rede e surgiu um problema, nos terminais da rede... porque quando a hora de um deles está errado o sistema cai.... o banco que utilizo é o firebird......... teria como assim que o terminal inicializar ele pegar a hora do servidor. trabalhar com a hora do servidor e a data tudo do servidor para evitar problema nos terminais......????????
Se tiver qual a melhor maneira de se fazer isso????
Brigadão Galera!!!!
tenho um sistema em rede e surgiu um problema, nos terminais da rede... porque quando a hora de um deles está errado o sistema cai.... o banco que utilizo é o firebird......... teria como assim que o terminal inicializar ele pegar a hora do servidor. trabalhar com a hora do servidor e a data tudo do servidor para evitar problema nos terminais......????????
Se tiver qual a melhor maneira de se fazer isso????
Brigadão Galera!!!!
Ao iniciar seu sistema, vc pode disparar essa query:
Depois vc pode tentar mudar a hora do sistema operacional passando a data que vc pegou do banco:
Se não der, vc pode pegar a hora e acrescentando segundo a segundo com um Timer. E o seu sistema passa a trabalhar com essa hora controlada pelo seu sistema.
select current_timestamp from rdb$database
Depois vc pode tentar mudar a hora do sistema operacional passando a data que vc pegou do banco:
Time = seuRecordset(0)
Se não der, vc pode pegar a hora e acrescentando segundo a segundo com um Timer. E o seu sistema passa a trabalhar com essa hora controlada pelo seu sistema.
Segue:
Em um modulo:
Em um modulo:
Public Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Public Declare Function SetSystemTime Lib [Ô]kernel32[Ô] (lpSystemTime As SYSTEMTIME) As Integer
Public Sub Atualiza_Sistema()
[ô]ATUALIZA A HORA
Dim lpSystemTime As SYSTEMTIME
Set rs = New ADODB.Recordset
[ô]Aqui você coloca a chamada do Firebird para pegar a data e a hora.
rs.open [Ô]Select Getdate()[Ô],conn,adOpenDynamic ,adLockReadOnly
wDataServidor = rs(0)
lpSystemTime.wYear = Format(rs(0), [Ô]yyyy[Ô])
lpSystemTime.wMonth = Format(rs(0), [Ô]MM[Ô])
lpSystemTime.wDay = Format(rs(0), [Ô]dd[Ô])
[ô]SetSystemTime lpSystemTime
lpSystemTime.wHour = Format(rs(0), [Ô]HH[Ô]) + 3
lpSystemTime.wMinute = Format(rs(0), [Ô]NN[Ô])
lpSystemTime.wSecond = Format(rs(0), [Ô]ss[Ô])
lpSystemTime.wMilliseconds = 0
[ô]Altera a hora do PC
SetSystemTime lpSystemTime
End Sub
Mudar a hora do computador vai falhar se o usuário não for administrador, eu diria para que sempre que você for pegar a hora usar o banco de dados para isso, tipo o que o LLAIA disse, só que em vez de pegar no começo do programa e ir incrementando como ele diz, simplesmente pegue de novo toda hora que precisar, e no caso de usar em inserts e tal acredito que poderia até colocar o CURRENT_TIMESTAMP direto na SQL, assim você sempre usa a hora do servidor para tudo que é importante.
Tópico encerrado , respostas não são mais permitidas