有关服务器和客户机同步的问题(200分)

  • 主题发起人 主题发起人 chentf
  • 开始时间 开始时间
C

chentf

Unregistered / Unconfirmed
GUEST, unregistred user!
最近我们在做一个C/S数据库系统,由于有几台客户机同时工作,此时由这些客户机产生的时间字段就都归到服务器中去引起时间混乱。所以我们想让客户机一启动应用程序就从服务器端取得时间,这样就保证了时间的统一。我现在的服务器的数据库是用MS SQL SERVER。客户应用程序采用DELPHI编程。由于时间急迫,请各位帮个忙,我将感激不尽。
我的E—MAIL:tianfu@sohu.com
chentianfu 2000-06-21


 
SQL.add('Select ''curdatetime''=getdate()');
Open;
FieldByName('curdatetime').asDatetime;

就可以取到server时间,然后把本机时间改过来。
 
补充:修改本机时间的过程
procedure SynchroTime(Handle: THandle; CurrentTime: TDateTime);
var t: TSYSTEMTIME;
n, c: TDateTime;
begin
n:=Now;
if n>CurrentTime then c:=n-CurrentTime else c:=CurrentTime-n;
if c<0.0014 then Exit;
if MessageBox(Handle, PChar('系统发现您所使用的计算机与服务器的时间相差过大!'
+#13#10#13#10' 服务器时间:'+DateTimeToStr(CurrentTime)
+#13#10' 本机时间:'+DateTimeToStr(n)
+#13#10#13#10'现在同步您的计算机与服务器的时间吗?'),
'警告',MB_ICONWARNING+MB_YESNO)<>ID_YES then Exit;
CurrentTime:=CurrentTime+(Now-n);
DecodeDate(CurrentTime,t.wYear,t.wMonth,t.wDay);
DecodeTime(CurrentTime,t.wHour,t.wMinute,t.wSecond,t.wMilliseconds);
SetLocalTime(t);
end;
 
还有,是不是向服务器递交时间字段的时候是使用客户机的时间的?
不要这样,直接就使用服务器的时间。getdate
 
多人接受答案了。
 
后退
顶部