Главная страница
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.014 c
1-94848
Duke DEE
2003-05-19 18:43
2003.05.29
Последовательность в if then else


8-94969
AngelSaint
2002-12-20 09:45
2003.05.29
Как программировать Sound Blaster


14-95020
Ruslan
2003-05-12 05:50
2003.05.29
Саоздание АмперМетра


1-94921
Hill
2003-05-17 15:41
2003.05.29
параллельная прокрутка Memo1 и Memo2


1-94914
Tatiana
2003-05-15 10:50
2003.05.29
TAB