Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.29;
Скачать: CL | DM;

Вниз

Синхронизация с сервером.   Найти похожие ветки 

 
Ш-К   (2003-05-11 06:31) [0]

Как синхронизировать время на клиентских машинах по серверу на котором IB. 2-звенка.


 
Alexandr ©   (2003-05-11 08:59) [1]

получить время с сервера Interbase
select cast("now" as Date) from RDB$dataBase
здесь возможны вариации в зависимости от диалекта БД
А уж как это время прописать себе на компьютер - это тебе в другую конфу.
Кстати, в FIBPlus эта операция делается автоматически


 
Ш-К   (2003-05-11 19:07) [2]

Как получить время я понимаю. Например, делал так:

CREATE PROCEDURE GET_NOW
RETURNS (
RESULT DATE)
AS
begin
RESULT = "NOW";
end


Другое дело, что возможны грабли, когда запрос не выполнился. Транзакция "зависла" или сервер упал... не знаю. Т.е. мне нужна функция, которая возвращает время с сервера, если запрос выполнился, и 0(1899...), если была ошибка.
Вот как я делаю:

function TDataMod.GetNowFromServer: TDateTime;
var SystemTime: TSystemTime;
begin
result:= 0;
GET_NOW_Transaction.StartTransaction;
try
GET_NOW_SP.ExecProc;
finally
GET_NOW_Transaction.Commit;
result:= GET_NOW_SP.FieldByName("RESULT").AsDateTime;
DateTimeToSystemTime(result, SystemTime);
SetSystemTime(SystemTime);
end;
end;


Оно то работает. Только вот будет ли работать ВСЕГДА?


 
Desdechado ©   (2003-05-11 19:13) [3]

1-й вопрос звучал иначе...
поставь у клиентов time-сервер на IB-сервер или сделай в планировщике net time
вот и вся синхронизация


 
Ш-К   (2003-05-11 22:14) [4]

А что такое "time-сервер на IB-сервер"?
И где взять планировщик net time? Это что, программы отдельные или настройки чего-то?
Можно подробнее. Поиск ничего не даёт - слова слишком ходовые.

PS/ Клиенты-98 сервер-2000.


 
Sergey13 ©   (2003-05-12 08:35) [5]

2Ш-К (11.05.03 22:14)
В autoexec.bat на клиенте напиши строчку
net time \\servname /set
вроде так (точно не помню). servname - имя сервера


 
ЮЮ ©   (2003-05-12 09:17) [6]

>Другое дело, что возможны грабли, когда запрос не выполнился. Транзакция "зависла" или сервер упал...

Может тогда написать чуть иначе:

function TDataMod.GetNowFromServer: TDateTime;
var SystemTime: TSystemTime;
begin
try
GET_NOW_SP.ExecProc;
result:= GET_NOW_SP.FieldByName("RESULT").AsDateTime;
DateTimeToSystemTime(result, SystemTime);
SetSystemTime(SystemTime);
except
result:= 0;
end;
end;


 
Johnmen ©   (2003-05-12 09:46) [7]

Одного не могу понять, причем здесь транзакции ?


 
Cranium ©   (2003-05-12 12:09) [8]

Если тебе нужно точное серверное время, так подставляй его в тригере, тогда получишь точное время записи.....



Страницы: 1 вся ветка

Текущий архив: 2003.05.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-95108
NetBreaker666
2003-05-07 12:37
2003.05.29
Моё FAQ :)


6-94982
VIB
2003-03-29 16:12
2003.05.29
MAC-Adress


1-94960
Shadowofman
2003-05-18 13:25
2003.05.29
Свойства функциональных клавиш...


1-94862
Maksim Realov
2003-05-16 18:39
2003.05.29
Пара вопросов про ObjectPascal


1-94946
Fenix_
2003-05-17 03:26
2003.05.29
байт знака числа