Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Синхронизация с сервером. [IB6.x, FB]


Ш-К ©   (2003-05-11 06:31:00) 

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


Cranium   (2003-05-12 12:09:00) [1]

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


Johnmen   (2003-05-12 09:46:00) [2]

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


ЮЮ   (2003-05-12 09:17:00) [3]

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

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

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;


Sergey13   (2003-05-12 08:35:00) [4]

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


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

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

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


Desdechado   (2003-05-11 19:13:00) [6]

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


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

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

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;


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


Alexandr   (2003-05-11 08:59:00) [8]

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо